关闭 ggplot 中的一些图例

297

假设我有一个 ggplot,它有多个图例。

mov <- subset(movies, length != "")
(p0 <- ggplot(mov, aes(year, rating, colour = length, shape = mpaa)) +
  geom_point()
)

我可以这样关闭所有图例的显示:

(p1 <- p0 + theme(legend.position = "none"))

show_guide = FALSE传递给geom_point(如此问题所述)可以关闭形状图例。

(p2 <- ggplot(mov, aes(year, rating, colour = length, shape = mpaa)) +
  geom_point(show_guide = FALSE)
)

但是如果我想关闭颜色图例怎么办?似乎没有一种方法告诉show_guide将其行为应用于哪个图例。并且在比例尺或美学方面没有show_guide参数。

(p3 <- ggplot(mov, aes(year, rating, colour = length, shape = mpaa)) +
  scale_colour_discrete(show_guide = FALSE) +
  geom_point()
)
# Error in discrete_scale

(p4 <- ggplot(mov, aes(year, rating, shape = mpaa)) +
  aes(colour = length, show_guide = FALSE) +
  geom_point()
)
#draws both legends

这个问题建议现代(自ggplot2 v0.9.2以来)控制图例的方法是使用guides函数。

我希望能够像这样做:

p0 + guides(
  colour = guide_legend(show = FALSE) 
)

但是guide_legend没有展示参数。

我该如何指定显示哪些图例?


8
最近的“ggplot2”更新中,“show_guide”已被弃用,并由“show.legend”取而代之。 - PatrickT
2个回答

389

你可以在scale_..._...()中使用guide = "none"来取消图例。

对于你的例子,应该使用scale_colour_continuous(),因为length是连续变量(不是离散变量)。

(p3 <- ggplot(mov, aes(year, rating, colour = length, shape = mpaa)) +
   scale_colour_continuous(guide = "none") +
   geom_point()
)

或者使用函数guides(),您应该为不想显示为图例的元素/美学设置"none",例如fillshapecolour

p0 <- ggplot(mov, aes(year, rating, colour = length, shape = mpaa)) +
  geom_point()    
p0+guides(colour = "none")

更新

两种提供的解决方案在新版ggplot2 3.3.5中均可使用,但是movies数据集不再存在于此库中。相反,您必须使用新包ggplot2movies来检查那些解决方案。

library(ggplot2movies)
data(movies)
mov <- subset(movies, length != "")

9
在ggplot2 0.9.3中,scale_colour_continuous(guide = FALSE)无效,但guides(colour=FALSE)可以解决此问题。非常感谢Didzis! - Nikolay Nenov
1
@NikolayNenov 奇怪,因为对我来说,使用ggplot2 0.9.3.1两种解决方案都有效。 - Didzis Elferts
13
我希望你能翻译以下内容:我想移除关于alpha的图例。guides(alpha=FALSE)可以解决问题。谢谢,Didzis。Translated: 我想要移除“alpha之传说”的图例。使用guides(alpha = FALSE)即可达到目的。谢谢,Didzis。 - l0o0
3
自我提示:如果您有一个“geom_linerange()”,但图例显示十字而不是线,请在“geom_linerange()”内插入“show.legend=FALSE”。 - PatrickT
4
建议更新:guide = FALSE 已被废弃,可以使用 guide = "none" 替代。 - Chr

74
您可以在几何图形中添加 show.legend=FALSE 以抑制相应的图例。

工作得非常好! - ABCD
正是我正在寻找的。 - asalimih
这个值得单独开一个帖子。谢谢伙计。 - ashah

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接