r - 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))
解决方案
与其添加三个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")
它现在具有与颜色相匹配的传说。如果您正在寻找其他东西,请告诉我。
推荐阅读
- python - 如何在 VSCode 中将虚拟环境设置为默认解释器
- php - 我正在尝试将 php 中的变量传递给 sql 函数以获得 LIMIT 值
- swift - 如何在 SwiftUI 中使用 Firestore 创建子集合
- php - 在最近的订单小部件中添加 billing_first_name (Woocommerce)
- php - 将 3 个 MySQL 表中的数据转换为 HTML 表错误
- python - 如何使用 pickle 为我的字典检索文件?
- java - 有人可以解释这段代码中的布尔重复方法吗?
- xml - 描述双核主机的速度文件
- python - 从 python 中的现有管道在 pyspark 管道中创建自定义转换或 udf
- flutter - 在 dart 中动态访问属性