2017-02-20 1 views
1

GDPが低いほどGDPが黒く、GDPが高くなるようにプロットを修正しますか?あなたはrgb機能を使用してこれを行うことができますデータを反映するためにプロットポイントの色を変更する

data <-read.csv("rosling.csv") 
head(data) 

tail(data) 

median(data$pcGDP) 
median(data$life.expectancy) 

#median per-capita GDP: 4500.592 
#median life expectancy: 72.84712 

options(scipen=999) 
data$gdp <- data$pcGDP*data$total.population 
data$gdp[data$country=="United States"] 
#calculated GDP of the United States: 14419400000770 

data$gdp[data$country=="Niger"] 
#calculated GDP of Niger: 5410608052 

data$gdp[data$country=="Bahrain"] 
#calculated GDP of Bahrain: 25713571418 

mean(data$pcGDP) 
# 12825 

#Part 3 
plot(log(data$pcGDP), 
    data$life.expectancy, 
    cex=(data$total.population/1000000000)+1, 
    col=if(data$pcGPD <= 12825){ 
     "red" 
    } else{ 
     "black" 
    } 
) 
+2

再現可能な例を使用せずにRを使用する方法に関するので、この質問を議論の対象外とすることにしました。 – gung

+0

そのような色の使用のために、それは 'ggplot2'に切り替える例かもしれません。基本グラフィックスを使用する場合は、コードグレーのような関数を作成してください。< - function(var、min、max) var < - (var-min)/(max-min) var < - round(100 * var) col1 < - paste( "gray"、var、sep = "") col1} を使用し、plotにcol =引数として使用します。使用例:結果コードグレー(runif(10)、0,1)を与えるcodegrey(runif(10)、0,1) [1] "grey52" "grey58" "grey99" "grey31" "grey67" "grey48" "grey44" "grey4" [9] "grey3" "grey63" –

答えて

0

(IはRに、導入データ点灯&ヴィスクラスでかなり新しいです)。赤、緑、青の値を取り、色を出力します。黒は、赤、緑、青に対して0に対応します。だから、黒から赤に行くには、緑と青をゼロに設定し、赤の値を増やすことができます。

あなたは0と1の間の値を必要とするので、最初のあなたはもちろん、私はあなたのデータにそれを行うことはできませんが、私は人工的にそれをテストしたときに、それがうまく働いた

# make a copy of the data$pcGDP variable 
x <- data$pcGDP 

# convert to [0,1] 
x <- (x-min(x))/(max(x)-min(x)) 

# create a vector of colours 
col <- rgb(x, 0, 0) 

# plot 
plot(log(data$pcGDP), 
    data$life.expectancy, 
    cex=(data$total.population/1000000000)+1, 
    col=col 
) 

この範囲にあなたの変数を変換する必要がありますデータ。

0

(グレースケールのみを与える)(もっと良い解決策は、ggplot2グラフィックスシステムに切り替えることです)以下に示します。関数に

codegrey <- function(var,min,max) { 
    var <- (var-min)/(max-min) 
    var <- round(100*var) 
    col1 <- paste("grey",var,sep="") 
    col1} 

を行い、生成された出力を持つ例の呼び出しは以下の通りです:

codegrey(runif(10),0,1) 
[1] "grey52" "grey58" "grey99" "grey31" "grey67" "grey48" "grey44" "grey4" 
[9] "grey3" "grey63" 

そして、あなたは、このようなplotコマンドでそれを使用することができます。

plot(log(data$pcGDP), 
    data$life.expectancy, 
    cex=(data$total.population/1000000000)+1, 
    col=codegrey(log(data$pcGDP),min(log(data$pcGDP)), 
            max(log(data$pcGDP))) 
) 

(しかし、あなたがすべきあなたのデータフレーム「データ」を呼んでいないなら、犬を「犬」と呼ぶことはありません!)Rに知られているすべての色名のリストを取得するには、 colors()というコマンドを入力します。

関連する問題