2014-01-17 83 views
7

任何人都可以提供有關處理透明度和alpha層次與許多圖層(參考ggplot2)的最佳方法的建議嗎?在下面的示例代碼,它變得非常難以看到個別國家邊界(如南卡羅來納州,北卡羅來納州,弗吉尼亞州) - 我已經嘗試設置alpha=0.00001但是這似乎使事情變得更糟......ggplot2 stat_density2d的透明度和Alpha級別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()內映射一些變量到alpha=,然後默認情況下,alpha值範圍從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