关闭 ggplot 中的一些图例

Turning off some legends in a ggplot

提问人:Richie Cotton 提问时间:1/30/2013 最后编辑:CommunityRichie Cotton 更新时间:2/8/2022 访问量:251787

问:

假设我有一个带有多个图例的 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_guideshow_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

如何指定显示哪些图例?

r ggplot2

评论

8赞 PatrickT 12/4/2016
在最近的更新之后,已被弃用并替换为 .ggplot2show_guideshow.legend

答:

389赞 Didzis Elferts 1/30/2013 #1

您可以使用 in 来隐藏图例。guide = "none"scale_..._...()

对于您的示例,您应该使用 because 是连续变量(不是离散变量)。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")

更新

提供的两种解决方案都可以在新版本 3.3.5 中使用,但此库中不再存在数据集。相反,您必须使用新包来检查这些解决方案。ggplot2moviesggplot2movies

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

评论

9赞 Nikolay Nenov 5/29/2013
scale_colour_continuous(guide = FALSE) 在 ggplot2 0.9.3 中不起作用,但 guides(colour=FALSE) 解决了这个问题。非常感谢Didzis!
1赞 Didzis Elferts 5/29/2013
@NikolayNenov奇怪,因为这两种解决方案都适用于我 ggplot2 0.9.3.1
13赞 l0o0 4/28/2016
我想删除阿尔法的传说。 做这个伎俩。谢谢你,Didzis。guides(alpha=FALSE)
3赞 PatrickT 9/30/2017
自我注意:如果您有一个,并且图例显示的是十字而不是线,请在 .geom_linerange()show.legend=FALSEgeom_linerange()
4赞 user 7/14/2021
建议的更新:已弃用,并已替换为 。guide = FALSEguide = "none"
74赞 fc9.30 9/4/2018 #2

您可以简单地添加到几何图形中以隐含相应的图例show.legend=FALSE

评论

0赞 SmallChess 9/8/2021
效果很好!
0赞 asalimih 10/30/2021
正是我所寻找的
0赞 ashah 5/18/2023
这应该有自己的线索。谢谢伙计。