删除ggplot2中的额外图例
我有一个简单的数据框,我正在试图使用ggplot2做一个组合的线和点图。 假设我的数据如下所示:
df <- data.frame(x=rep(1:10,2), y=c(1:10,11:20), group=c(rep("a",10),rep("b",10)))
我正在试图做一个情节:
g <- ggplot(df, aes(x=x, y=y, group=group)) g <- g + geom_line(aes(colour=group)) g <- g + geom_point(aes(colour=group, alpha = .8)) g
结果看起来很好,只有一个例外。 它有一个额外的图例,显示我的geom_point
图层的alpha。
如何让图例显示组颜色,但不显示我的alpha设置?
可以在ggplot
调用中设置或映射美学。
-
aes(...)
定义的美学是从数据映射而来的,并创build了一个图例。 - 审美也可以设定为一个单一的价值,在
aes()
之外定义它。
在这种情况下,看起来你希望设置 alpha = 0.8
和map colour = group
。
去做这个,
将alpha = 0.8
放在aes()
定义之外。
g <- ggplot(df, aes(x = x, y = y, group = group)) g <- g + geom_line(aes(colour = group)) g <- g + geom_point(aes(colour = group), alpha = 0.8) g
对于任何映射的variables,您可以通过在适当的scale_...
调用中使用guide = 'none'
来抑制图例的外观。 例如。
g2 <- ggplot(df, aes(x = x, y = y, group = group)) + geom_line(aes(colour = group)) + geom_point(aes(colour = group, alpha = 0.8)) g2 + scale_alpha(guide = 'none')
这将返回一个相同的情节
编辑 @乔兰的评论是现货,我已经使我的答案更全面
只需在show.legend = F
的部分之后添加show.legend = F
代码即可。
g <- ggplot(df, aes(x=x, y=y, group=group)) g <- g + geom_line(aes(colour=group)) g <- g + geom_point(aes(colour=group, alpha = .8), show.legend = F)
对于旧版本的ggplot2(2012年末发布的0.9.2之前的版本),这个答案应该可以工作:
我用colour_scale
尝试了这个,并没有奏效。 看起来, colour_scale_hue
项目像一个默认参数为TRUE
的函数。 我添加了scale_colour_hue(legend=FALSE)
,它工作。
我不确定这是否是ggplot中所有色阶项目的情况