4

Alberto Cairo の "The Functional Art" で datavis の例を分析しています (私はあなたにお勧めします)。

その本には、この例があります

http://img546.imageshack.us/img546/8327/snap1026.png

そして、Rで試してみます。左下のグラフ(散布図)に

私は本からのデータを使用し、人口の関数で効果的な軍隊を計算し、lm(efect ~ pop)人口+効果の関数で予算を計算します

そしてここに質問があります: 色が予算の値を表すカラースケール (グラデーション) で散布図の背景をペイントするにはどうすればよいですか?

あとは予算の色でポイント(人口、効果)を入れたいと思います。このようにして、人口+効果の関数で国の予算を推定予算と比較できます

私は基本的なRを知っています.ggplot2scalesパッケージをインストールしました

私は似たようなグラフが欲しい

ここに画像の説明を入力

しかし、正しい色で。

ありがとうございました。

4

2 に答える 2

5

背景を取得するにはgeom_raster、必要な効果を得るために使用できます。@GeekOnAcid で提案されたのと同じデータセットを使用します。

最初にデータを取得し、回帰モデルを当てはめます。

crime = read.csv("http://datasets.flowingdata.com/crimeRatesByState2005.tsv", 
              header=TRUE, sep="\t")
 ##Fit the regression model
 m = lm(crime$burglary ~ crime$murder)

次に、背景色のグリッドを作成します。

##Create a grid for the background colour
x = seq(1, 10, length.out=100)
y = seq(400, 1200, length.out=100)
z = expand.grid(x,y)

ここで、グラデーション カラーの距離測定が必要です。回帰直線から二乗距離を使用しました。

z$grad = (z[,2] - (398.3 +  62.2*z[,1]))^2

次にプロットします。

require(ggplot2)    
ggplot(z) + geom_raster(aes(Var1, Var2, fill=grad)) + 
    geom_point(data=crime[1:15,], aes(murder, burglary, size=population),pch=1 ) + 
    geom_text(data=crime[1:15,], 
              aes(murder, burglary, label=state), 
              hjust=-0.2, size=4) + 
    scale_size_continuous(range=c(1,10)) + 
    scale_fill_continuous(high="red", low="white", trans="sqrt") +
    xlab("Murder") + ylab("Burglary")  + 
    guides(size=FALSE, fill=FALSE) +
    scale_y_continuous(expand=c(0, 0)) + 
    scale_x_continuous(expand=c(0, 0)) 

取得するため:

ここに画像の説明を入力

于 2012-11-05T09:48:48.800 に答える
2

開始するには、Rで基本的なグラフィックを使用してバブルチャートを作成する方法を示すNathan Yauによるこのチュートリアルをご覧ください。私は、あなたの例により関連性を持たせるために彼のソリューションのみを取得しました。

#get some example data
crime <- read.csv("http://datasets.flowingdata.com/crimeRatesByState2005.tsv", 
                  header=TRUE, sep="\t")
#define the radius of circles
radius <- sqrt( crime$population/ pi )
#makes your plot, bg defines colour, inches scales circles
symbols(crime$murder[1:15], crime$burglary[1:15], circles=radius[1:15], 
        inches=0.5, bg=gray(0.9), xlab="Murder Rate", ylab="Burglary Rate")
#makes your labels, you can offset them by adding values to x and y arguments
text(crime$murder[1:15], crime$burglary[1:15], crime$state[1:15], cex=0.6)

ここに画像の説明を入力してください

背景はトリッキーですが、本当に必要ですか?色を変えても醜く見えます...

于 2012-11-04T22:33:55.797 に答える