首页 > 解决方案 > R中ggplot图形的图例问题

问题描述

在此处输入图像描述问候!

请在 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))

标签: rggplot2

解决方案


与其添加三个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") 

结果: 一个ggplot ecdf

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


推荐阅读