关闭ggplot中的一些传说

Ric*_*ton 197 r ggplot2

假设我有一个包含多个图例的ggplot.

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

我可以像这样关掉所有传说的显示:

(p1 <- p0 + theme(legend.position = "none"))
Run Code Online (Sandbox Code Playgroud)

传递show_guide = FALSEgeom_point(根据这个问题)关闭形状图例.

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

但是,如果我想要关闭颜色图例呢?似乎没有办法告诉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
Run Code Online (Sandbox Code Playgroud)

这个问题表明现代(自ggplot2 v0.9.2)控制传说的方式是与guides功能.

我希望能够做类似的事情

p0 + guides(
  colour = guide_legend(show = FALSE) 
)
Run Code Online (Sandbox Code Playgroud)

guide_legend没有展示参数.

如何指定显示哪些图例?

Did*_*rts 268

您可以使用guide=FALSEin scale_..._...()来压制图例.

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

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

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

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

UPDATE

两个提供的解决方案都在新ggplot2版本2.0.0中工作,但movies此库中不再存在数据集.相反,您必须使用新包ggplot2movies来检查这些解决方案.

library(ggplot2movies)
data(movies)
mov <- subset(movies, length != "")
Run Code Online (Sandbox Code Playgroud)

  • 我想删除**alpha**的传说.`guides(alpha = FALSE)`做的伎俩.谢谢你,Didzis. (9认同)
  • scale_colour_continuous(guide = FALSE)在ggplot2 0.9.3中不起作用,但指南(color = FALSE)解决了这个问题.非常感谢Didzis! (6认同)
  • 建议更新:`guide = FALSE` 已弃用,并被 `guide = "none"` 取代。 (4认同)
  • 自我注意:如果你有一个``geom_linerange()``并且图例显示的是十字而不是一行,则在``geom_linerange()``中插入``show.legend = FALSE``. (2认同)

fc9*_*.30 15

您只需添加show.legend=FALSE到geom即可抑制相应的图例