我有一个简单的数据框,我正在尝试使用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
结果看起来很好,有一个例外。它有一个额外的图例,显示alpha
图层的geom_point
。
如何让图例显示组颜色,而不是显示我的Alpha设置?
答案 0 :(得分:144)
美学可以在ggplot
通话中设置或映射。
aes(...)
中定义的美学是从数据中映射,并创建了一个图例。aes()
之外定义。在这种情况下,您似乎希望设置 alpha = 0.8
和地图 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
对于任何映射的变量,您可以在相应的guide = 'none'
调用中使用scale_...
来抑制图例的外观。例如
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')
将返回相同的情节
修改的 @Joran的评论是现场评论,我的答案更加全面
答案 1 :(得分:20)
只需在您不想要的部分之后添加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)
答案 2 :(得分:0)
对于ggplot2的旧版本(2012年底发布的0.9.2之前的版本),这个答案应该有效:
我用colour_scale
尝试了这个并且它不起作用。似乎colour_scale_hue
项的工作方式类似于具有默认参数TRUE
的函数。我添加了scale_colour_hue(legend=FALSE)
并且它有效。
我不确定ggplot
中的所有色标项是否都是这种情况