【问题标题】:Turning off some legends in a ggplot关闭 ggplot 中的一些图例
【发布时间】:2021-10-27 04:16:44
【问题描述】:

假设我有一个包含多个图例的 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 没有显示参数。

如何指定显示哪些图例?

【问题讨论】:

  • 在最近的ggplot2 更新之后,show_guide 已被弃用并被show.legend 取代。

标签: r ggplot2


【解决方案1】:

你可以简单地在geom中添加show.legend=FALSE来抑制对应的图例

【讨论】:

  • 效果很好!
  • 正是我要搜索的内容
【解决方案2】:

您可以在scale_..._...() 中使用guide=FALSE 来隐藏图例。

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

【讨论】:

  • scale_colour_continuous(guide = FALSE) 在 ggplot2 0.9.3 中不起作用,但 guides(colour=FALSE) 解决了这个问题。非常感谢 Didzis!
  • @NikolayNenov 奇怪,因为这两种解决方案都适用于 ggplot2 0.9.3.1
  • 我想删除 alpha 的传说guides(alpha=FALSE) 做到这一点。谢谢你,Didzis。
  • 自我注意:如果您有geom_linerange() 并且图例显示的是十字而不是线条,请在geom_linerange() 中插入show.legend=FALSE
  • 建议更新:guide = FALSE 已弃用,并已替换为 guide = "none"
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-27
  • 2022-01-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多