2013-11-04 43 views
8

在ggplot2中,在圖例中反映了geom_XXX中定義的透明度。例如:在ggplot2圖例中移除點透明度

df <- data.frame(x=runif(10000), z=ifelse(runif(10000) > 0.5, 'a', 'b')); df$y <- runif(10000); df$y[df$z == 'b'] <- cos(df$x[df$z == 'b']*10) 
ggplot(df) + geom_point(aes(x, y, color=z), alpha=0.1) 

給出以下結果:

what we have

由於點是非常透明的,它們幾乎不可見的圖例。我想從圖例中刪除點的透明度,從而使圖形看起來像這樣:

what I want

這怎麼可能?

回答

21

您可以使用功能guides()override.aes=來爲圖例條目設置alpha值。

ggplot(df) + geom_point(aes(x, y, color=z), alpha=0.1)+ 
    guides(colour = guide_legend(override.aes = list(alpha=1))) 
+0

沒有意識到這種機制。快速搜索override.aes給出了幾個例子:http://stackoverflow.com/q/16356052/17523和http://stackoverflow.com/q/5290003/17523這是這個問題的重複。 –