在ggplot中关闭一些图例


220

假设我有一个不止一个图例的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 = FALSEgeom_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没有show参数。

如何指定显示哪些图例?


6
最近ggplot2更新之后,show_guide已被弃用并由代替show.legend
PatrickT

Answers:


293

您可以使用guide=FALSEscale_..._...()压制传奇。

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

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

或者使用功能,guides()您应该设置FALSE为该元素/审美,你不希望出现的传说,例如fillshapecolour

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

更新

两种提供的解决方案都可以在新ggplot2版本2.0.0中工作,但是movies此库中不再存在数据集。相反,您必须使用新程序包ggplot2movies来检查那些解决方案。

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

6
scale_colour_continuous(guide = FALSE)在ggplot2 0.9.3中不起作用,但是guides(colour = FALSE)解决了该问题。非常感谢Didzis!
Nikolay Nenov

1
@NikolayNenov Strange,因为这两种解决方案都适用于ggplot2 0.9.3.1
Didzis Elferts 2013年

9
我想删除alpha的图例guides(alpha=FALSE)做到这一点。谢谢你,迪齐斯。
l0o0

3
自我注意:如果您有个geom_linerange(),并且图例显示的是十字而不是线条,请show.legend=FALSE在内插入geom_linerange()
PatrickT

25

您可以简单地添加show.legend=FALSE到geom中以隐藏相应的图例

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.