关闭ggplot中的一些传说

时间:2013-01-30 12:49:47

标签: r ggplot2

假设我有一个包含多个图例的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(根据this question)会关闭形状图例。

(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

This question表明现代(自ggplot2 v0.9.2)控制图例的方式是使用guides函数。

我希望能够做一些像

这样的事情
p0 + guides(
  colour = guide_legend(show = FALSE) 
)

但是guide_legend没有show参数。

如何指定显示哪些图例?

2 个答案:

答案 0 :(得分:252)

您可以使用guide=FALSE中的scale_..._...()来压制图例。

对于您的示例,您应该使用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 != "")

答案 1 :(得分:7)

您只需将show.legend=FALSE添加到geom中即可隐藏相应的图例