2013-04-17 8 views
5

ggplot2で、第3の変数と密度2dの等高線にサイズマッピングして散布図を作ろうとしています。伝説が密度2d輪郭の包含によって混乱しているように見える。サイズマッピングと密度を使用した奇妙な伝説

はたとえば、次のコードは動作します:

library('ggplot2') 
set.seed(1) 
x=rnorm(100); y=rnorm(100,sd=10); z=seq(1,10,length.out=100) 
dd=data.frame(x=x,y=y,z=z) 
ggplot(dd,aes(x,y,size=z))+geom_point() 

plot looks normal

しかし、今は、私がstat_density2d()への呼び出しに追加するときに伝説が異常に振る舞いに注意してください。具体的には、プロット凡例は、青色のブロックの代わりに黒丸を示す:

size=として
ggplot(dd,aes(x,y,size=z))+geom_point()+stat_density2d() 

plot legend shows blue blocks instead of black circles

答えて

6

あなたがstat_density2d()に設定できる美学の一つであり、この場合には、ggplot()コールに設定されています、凡例は、ラインとポイントの両方に対して作成されます(geom_point()stat_density2d()の前に呼び出されるので、ポイントは凡例のラインの下に隠されます)。凡例から青い線を削除するには、stat_density2d()の中に手動でsize=0.5(または他の値)を設定して、凡例を正しく設定します。

ggplot(dd,aes(x,y,size=z))+geom_point()+stat_density2d(size=0.5) 

enter image description here

+2

(1)私は、これは便利ですかどうかわからないんだけど、順番を入れ替えることは、両方の伝説(基本的に黒丸は四角形の後ろに隠れていた)を示しています 'ggplot(DD、AESを(x、y、size = z))+ stat_density2d()+ geom_point() ' – Arun

+1

@Arunはい、そうです - 両方の凡例がプロットされています。解決策は、凡例の線幅を取り除く方法を示しています(この場合意味がないので) –

+0

ありがとう! – js86

関連する問題