【问题标题】:Removing ggplot2's geom_point icons from the legend从图例中删除 ggplot2 的 geom_point 图标
【发布时间】:2017-05-31 06:28:53
【问题描述】:

注意:这是this question 的后续。

首先是重现数据的代码:

mydf <- data.frame(year = c(rep(2000, 3), rep(2002, 3), rep(2004, 3), rep(2006, 3), rep(2008, 3), rep(2010, 3), rep(2012, 3), rep(2014, 3), rep(2016, 3)),
                 answer = rep(c("A great deal", "Hardly any", "Only some"), 9),
                 result = c(0.3015940, 0.1399303, 0.5584757, 0.2269548, 0.1792754, 0.5937698, 0.2955301, 0.1309859, 0.5734840, 0.3008197, 0.1344499,
                                                     0.5647303, 0.1919454, 0.2026290, 0.6054256, 0.1059793, 0.4190533, 0.4749674, 0.1190636, 0.3631279, 0.5178085, 0.1518314,
                                                     0.3181203, 0.5300483, 0.1424715, 0.3094615, 0.5480669))
mydf$year <- factor(mydf$year)
mydf$answer <- factor(mydf$answer)

triangles <- data.frame(year = c(2002, 2004, rep(2008, 2), rep(2010, 3), 2012),
                        answer = c(rep("A great deal", 3), "Hardly any", "A great deal", "Only some", rep("Hardly any", 2)),
                        direction = c("Decrease", "Increase", "Decrease", "Increase", rep("Decrease", 2), "Increase", "Decrease"),
                        result = c(0.2269548, 0.2955301, 0.1919454, 0.2026290, 0.1059793, 0.4749674, 0.4190533, 0.3631279))
triangles$year <- factor(triangles$year)
triangles$answer <- factor(triangles$answer)
triangles$direction <- factor(triangles$direction)

当我运行以下 ggplot2 代码时,我最终得到了这个:

ggplot() + 
geom_line(data = mydf, aes(x = year, y = result, colour = answer, group = answer)) +
geom_point(data = triangles, aes(x = year, y = result, fill = answer, shape = direction), size = 3) +
scale_shape_manual(values = c(25, 24))

这里的问题是占据answer 图例键的黑点。我尝试使用以下图层将其删除:

guides(fill = guide_legend(override.aes = list(size = 0)))

我明白了:

我仍然在传说中得到一个小黑点。我还能做些什么来完全删除它?

【问题讨论】:

  • 由于colour 图例只影响线条,您可以这样做:guides(colour=guide_legend(override.aes=list(shape=NA)))

标签: r ggplot2


【解决方案1】:

你可以的

ggplot() + 
  geom_line(data = mydf, aes(x = year, y = result, colour = answer, group = answer)) +
  geom_point(data = triangles, aes(x = year, y = result, fill = answer, shape = direction), size = 3) +
  scale_shape_manual(values = c(25, 24), name = "direction") + 
  scale_color_discrete(name = "answer") + 
  scale_fill_discrete(name = "c", guide = "none")

【讨论】:

  • 谢谢,这符合要求。你能解释一下这里的逻辑吗?我不明白scale_fill_discrete 函数是如何解决这个问题的。
  • Afaik,ggplot2 尝试组合具有相同名称的比例(= 通常是映射的变量名称)。在这里,我明确地重命名了秤以获得三个而不是两个;然后我指定不显示第三个。
猜你喜欢
  • 1970-01-01
  • 2023-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-29
  • 1970-01-01
  • 2011-08-26
  • 1970-01-01
相关资源
最近更新 更多