删除ggplot2中的多余图例


91

我有一个简单的数据框,正在尝试使用进行组合的线和点图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图层。

<code> geom_point </ code>透明度的额外图例

如何使图例显示组颜色,而不显示图例设置?

Answers:


172

可以在通话中设置映射美学 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的评论很现场,我的回答更全面了


18
这是正确的方法,因为OP是在设置而不是在绘制美感,但是通常您可以使用来禁止显示任何图例g + scale_alpha(guide = "none")
joran 2012年

确实。答案已经详细阐述。有一个全面的答案确实有意义,而不仅仅是针对OP问题。
mnel 2012年

4
非常感谢您的补充说明。这对帮助我理解ggplot的原理大有帮助。
野鸭

2
我已经使用ggplot一年多了,我从不了解映射变量或设置变量之间的区别。恭喜,这是迄今为止我见过的最好的SO答案。
阿米特·科利

1
@theforestecologist这是因为group美学本身并不会产生任何尺度或指导。它总是在修改其他内容。您将永远不会获得关于“团体”美学的传奇。
joran

41

只需将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)

1
这比映射与设置美学要直观得多(尽管这也消除了许多误解)
Wassadamo

1

对于ggplot2的旧版本(2012年末发布的0.9.2之前的版本),此答案应该有效:

我用a尝试了一下colour_scale,但没有用。看起来该colour_scale_hue项目的工作方式类似于带有默认参数的函数TRUE。我添加了scale_colour_hue(legend=FALSE),它起作用了。

我不确定ggplot中的所有色标项目是否都是这种情况


3
使用legendscale_*调用已取消,好做scale_colour_hue(guide = "none")
格里戈尔·托马斯

3
考虑到legend=FALSE@shujaa注释所指出的已弃用,这实际上是重复的答案,即将d添加guide = "none"scale_fill/color*函数中。
David LeBauer 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.