当前位置: 首页 > 知识库问答 >
问题:

关闭 ggplot 中的一些图例

邹英发
2023-03-14

假设我有一个不止一个传说的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(根据此问题)会关闭形状图例。

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

但是如果我想关闭颜色图例呢?似乎没有办法告诉< code>show_guide对哪个图例应用其行为。并且没有< code>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参数。

如何指定显示哪些图例?

共有2个答案

严宏朗
2023-03-14

您可以简单地将 show.legend=FALSE 添加到几何中以抑制相应的图例

孟佑运
2023-03-14

您可以在 scale_ 中使用 guide = “none”..._...() 以抑制图例。

对于您的示例,您应该使用< code > scale _ colour _ continuous(),因为< code>length是连续变量(不是离散变量)。

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

或者使用函数< code>guides()为不希望显示为图例的元素/美学设置< code >“none”,例如< code>fill 、< code>shape 、< code>colour。

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

所提供的两种解决方案都适用于新的< code>ggplot2版本3.3.5,但< code>movies数据集不再存在于该库中。相反,您必须使用新包< code>ggplot2movies来检查这些解决方案。

library(ggplot2movies)
data(movies)
mov <- subset(movies, length != "")
 类似资料:
  • 问题内容: 我有在同一活动中多次动态添加的 自定义 。 每个自定义视图实例在其他东西旁边都有一个孩子。该有它的 ID ,它是同每个视图的实例。 对于每个自定义视图实例,我在创建活动时都设置了不同的内容。当我旋转屏幕时,将重新创建活动,但是现在每个活动都显示相同(文本与最后一个实例的文本相同)。 这是因为实例状态的保存和还原会自动保存一些信息,但是该信息显然与ID链接,在我的情况下会产生问题。 有没

  • 画布定位 先看这张图: > x <- c(1,2,3) > y <- c(1,3,4) > data <- data.frame(x,y) > ggplot(data, aes(x = x, y = y)) + geom_point() 如果我们希望让画布再大一些,让这三个点集中一些怎么办?我们可以调整画布的坐标范围,以下两种方法效果是一样的: > ggplot(data, aes(x = x

  • 这是我的数据结构: 我在上面运行了以下代码: 我现在想要的是,对于像“Str1”这样的例子,我有“chr”和“pl”,这两个条应该水平相邻(也适用于“Str2”、“Str3”、“Str7”和“Str8”)。但对于像“Str4”这样的情况,我只有“ch”,应该只有一个条。因此,钢筋不应相互重叠,而是水平排列。 EDIT - dput(head(myData,20)): 结构(列表(登录=结构(c(1

  • 问题内容: 是否可以为特定的代码块关闭声纳(www.sonarsource.org)测量,而哪些是不想测量的? 一个示例是Findbugs输出的“保留堆栈跟踪”警告。离开服务器时,如果客户端不知道该异常,我可能只想将消息传递回客户端,而不包括我刚刚捕获的实际异常(因为该客户端没有该JAR,例如包含例外)。 问题答案: 这是一个常见问题解答。您可以在线上触发警告。我更喜欢使用FindBugs机制,该

  • 问题内容: 我正在使用Selenium时禁用Firefox中的图像。它应该是firefox中首选项的简单更新,该文档记录在“ 在Selenium Python中禁用图像”的说明中 但是,当我运行时,会显示图像,并且当我输入about:config时,其值仍为1,而不是我尝试将其设置为2的值。 我的代码(用Python编写)是: 作为参考,此代码可以与首选项的另一个更改完美配合,例如使用line关闭

  • 我使用,并希望显示玩家得分的条形图,得分在y轴上,玩家的游戏在x轴上分组。 例如 由于玩家不必玩相同数量的游戏,因此在创建数据集时会产生大量空白,因为它试图为玩家2绘制一个条 有谁能帮我把这个空白处补上吗?理论上,玩家1可以继续玩100场游戏,而玩家2和3只玩几场,所以这看起来很荒谬!我是JFreeChart的新手,所以可能有一个明显的解决方案! 提前感谢您的帮助。