2013-11-04 50 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这是这个问题的重复。 –