【问题标题】:Legend issue with ggplot graphic in RR中ggplot图形的图例问题
【发布时间】:2021-09-30 13:52:51
【问题描述】:

greetings!

请在 R 中使用 ggplot 和 geom_line 命令绘制经验累积分布。 绘制的变量是三种高粱品种“soubatimi”、“tiandougou-coura”和“local”的产量,颜色分别为:绿色、蓝色和红色。但我无法在图表中添加相应颜色的图例. 这是输入(abc)

dput(abc)
structure(list(year = c(2018L, 2017L, 2020L), y_soubatimi = c(1614L, 
1665L, 2181L), prob_soub = c(0.047619048, 0.083333333, 0.041666667
), cum_prob_s = c(0.047619048, 0.130952381, 0.172619048), year.1 = c(2018L, 
2020L, 2017L), y_tiandougou_coura = c(1440L, 1475L, 1635L), prob_tc = c(0.047619048, 
0.041666667, 0.083333333), cum_prob_tc = c(0.047619048, 0.089285714, 
0.172619048), year.2 = c(2020L, 2018L, 2017L), y_local = c(916L, 
945L, 1080L), prob_loc = c(0.041666667, 0.047619048, 0.083333333
), cum_prob_loc = c(0.041666667, 0.089285714, 0.172619048)), class = "data.frame", row.names = c(NA, 
-3L))
   ggplot()+geom_line(data=abc,aes(x=y_soubatimi),(stat="ecdf"),col="green")+
   geom_line(data=abc,aes(x=y_tiandougou_coura),(stat="ecdf"),col="blue")+
   geom_line(data=abc,aes(x=y_local),(stat="ecdf"),col="red")+
   labs(x= "Yields,kg/ha",y = "Probability")+
   scale_colour_discrete(name  = "", 
                      breaks= c("souba", "tiand", "loca"),
                      labels= c("y_soubatimi", "y_tiandougou_coura", "y_local")) +
   theme_bw() +
   theme(panel.grid.major.y = element_blank(), 
         axis.text.x = element_text(size=10), 
         axis.text.y = element_text(size=10), 
         legend.text =element_text(size=10))

【问题讨论】:

  • 嘿,问题在于您绘制数据的方式。你能分享abc数据框吗?您可以执行 dput(abc) 并将结果粘贴到您的帖子中
  • 请修剪您的代码,以便更容易找到您的问题。请按照以下指南创建minimal reproducible example

标签: r ggplot2


【解决方案1】:

不要添加三个geom_line()s 并手动指定每个颜色的颜色,而是尝试添加一个geom_line() 并根据列中的值在aes() 中设置颜色。由于看起来您的数据位于 3 个单独的列中,因此您可能需要致电 pivot_longer()

这是一个使用您提供的数据完成我认为您正在寻找的示例:

library(tidyverse)

abc %>%
  pivot_longer(cols = c(y_soubatimi, y_tiandougou_coura, y_local)) %>%
  ggplot() +
  geom_line(aes(x=value, colour = name),
            stat = "ecdf") +
  labs(x= "Yields,kg/ha",y = "Probability") 

结果:

它现在具有与颜色匹配的传说。如果您正在寻找其他东西,请告诉我。

【讨论】:

  • 非常感谢,亲爱的克里斯托弗,您的 cmets 真的很有用。同时请这里是数据集(ABC),我将尝试您上面建议的命令并查看。
  • 您上面建议的代码分别适用于每个变量,但我关心的是如何将它们组合成一个图表,每个品种都有一个图例。为了解释更多,数据是每列中三个不同品种的 3 年时间序列。我想我不能将颜色设置为值,而是每列中的变量名称应该被定义为一种颜色。谢谢
  • 我已更新答案以使用您提供的数据。新图表包含所有 3 个物种,每个物种都有一个图例。如果您正在寻找其他东西,请告诉我。
  • 问候,亲爱的克里斯托弗!非常感谢您的大力帮助。这正是我想要的。因此,我认为提供的代码应该与我共享的相同类型的数据一起使用,因为我需要构建相同的图表,其中还包含通过这三个品种获得的收入。亲切的问候
  • 太棒了。如果答案对您有用,请不要忘记接受并投票。
猜你喜欢
  • 2020-07-15
  • 1970-01-01
  • 2021-02-07
  • 1970-01-01
  • 2022-09-30
  • 2013-06-02
  • 1970-01-01
  • 2021-12-13
  • 1970-01-01
相关资源
最近更新 更多