【问题标题】:R add legend for multiple layersR为多个图层添加图例
【发布时间】:2019-01-14 03:18:55
【问题描述】:

我想为情节添加一个图例,但它不起作用, 谁能帮我看看哪里出错了。

这是代码。

ggplot(data = dfNorm1, aes(x = X)) + 
  geom_col(aes(y = Government_suppliment), 
           fill = "#0000FF", color = "white", alpha = 0.8) + 
  geom_smooth(data = subset(dfNorm1,X >= 24), aes(y = Government_suppliment),
              method = "lm", se = FALSE, color = "#FF4040", 
              linetype = "dashed", size = 0.7) + 
  geom_smooth(data = subset(dfNorm1, X <= 24), aes(y = Government_suppliment),
              method = "lm", se = FALSE, color = "#FF4040", 
              linetype = "dashed", size = 0.7) + 
  geom_vline(xintercept = 24.5, size = 0.8, alpha = 0.8) + 
  geom_line(aes(y = Poverty_funds), 
            color = "#FF0000", size = 1, alpha = 0.7) + 
  geom_line(aes(y = MLI), color = "#EF3EFF", size = 1, 
            alpha = 0.8) + 
  scale_fill_manual(name = "",values = c("bar.label" = "#0000FF")) +
  scale_color_manual(name = "", values = c("line.label1" = "#FF0000", "line.label2" = "#EF3EFF",
                                           "line.labeld" = "#FF4040"))

【问题讨论】:

  • 不需要调用多个geom(例如geom_line 两次)。如果您发现自己这样做了,可能是时候重塑您的数据和/或制作单独的图了。
  • 请使用dput添加示例数据,编辑您的问题,使其更易于重现。
  • 好的,谢谢,我会重新整形

标签: r add legend


【解决方案1】:

您通常可以通过在其中一个几何图层中设置aes(color = column_title) 来生成图例。这段代码并不特别有意义,因为您引用了多个 y 轴而没有创建第二个 y 轴(如果您尝试这样做,这是一个坏习惯)。有没有办法可以发布更相关的代码或可重现的示例,以便人们可以准确地看到您正在尝试做什么?

【讨论】:

  • 作为评论也许更好。
  • 它一直告诉我我没有足够的业力供 cmets 使用,所以我想我会发布作为答案以提供帮助。不过我也有同感。
  • 我希望它不会被标记为删除。如果 OP 编辑​​了他们的问题,那么您可以更好地将其改写为答案和/或在您发现无法再回答时将其删除。干杯!
  • 好的,非常感谢,我应该把剧情贴出来,但是我的水平太低了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-09-19
  • 1970-01-01
  • 2017-01-17
  • 2014-05-15
  • 2021-03-06
  • 2017-07-29
  • 2018-04-11
相关资源
最近更新 更多