2014-01-17 21 views
7

多くのレイヤで透明度とアルファレベルを処理する最良の方法についてご意見をお聞かせください(ggplot2を参照)。以下のサンプルコードでは、それが(例えば、サウスカロライナ州、ノースカロライナ州バージニア州)の個々の状態の境界線を見ることは非常に困難になる - 私はalpha=0.00001を設定しようとしたが、これはさらに悪いことに見えます...ggplot2の透明度とアルファレベルstat_density2dのマップとレイヤーがR

library(ggplot2) 

all_states = map_data("state") 
set.seed(103) 
df = data.frame(long=sample(-90:-70,100,T), lat=sample(30:45,100,T)) 
p = ggplot() + 
    geom_polygon(data=all_states, aes(x=long, y=lat, group=group), color="white", fill="grey80") + 
    stat_density2d(data=df, aes(x=long, y=lat, fill=..level.., alpha=..level..), # HELP HERE ??? 
        size=2, bins=5, geom='polygon') + 
    geom_point(data=df, aes(x=long, y=lat), 
       color="coral1", position=position_jitter(w=0.4,h=0.4), alpha=0.8) + 
    theme_bw() 
p 

答えて

11

いくつかの変数をのaes()にマッピングし、デフォルトでアルファ値の範囲は0.1〜1です(マップされた変数の値が最小の場合は0.1、最も高い値の場合は1)。 scale_alpha_continuous()でそれを変更し、最大値と最小値の範囲を異なる値に設定することができます。

ggplot() + 
    geom_polygon(data=all_states, aes(x=long, y=lat, group=group), 
       color="white", fill="grey80") + 
    stat_density2d(data=df, aes(x=long, y=lat, fill=..level.., alpha=..level..), 
       size=2, bins=5, geom='polygon') + 
    geom_point(data=df, aes(x=long, y=lat), 
      color="coral1", position=position_jitter(w=0.4,h=0.4), alpha=0.8) + 
    theme_bw()+ 
    scale_alpha_continuous(range=c(0.1,0.5)) 

enter image description here