我有一些数据,我正在研究种子发芽率并比较 2 个不同的处理阶段和种子来源。 2 个阶段中的每个阶段都有多个组。我试图将结果绘制为时间序列,或者至少看起来类似于时间序列。我的数据如下所示:
我尝试将数据转换为长格式并使用pivot_longer和names_to函数对日期列进行分组,然后尝试使用以下代码进行绘图:
ggplot(df1, aes(x= days_num, y = germination, group=phase 1))+
geom_line(aes(color=phase 2)) +
facet_grid(source~.)
我希望能够在图表中并排显示不同的来源,然后将我的第 1 阶段 (A - XYZ) 线作为一个图表,将 (B - XYZ) 线分开。
谁能帮忙解决这个问题吗?
最佳答案
将阶段 1
映射到组时,您将 2 个值映射到 3 个不同的阶段 2 中的每一个。将阶段 2 映射到颜色,并按阶段 1 对图进行分面。
df1 <- "Source 'Phase 1' 'Phase 2' 'Day 1' 'Day 2' 'Day 3'
1 A X 4 4 8
1 A Y 0 17 17
1 A Z 5 10 15
1 B X 2 4 6
1 B Y 1 2 3
1 B Z 0 5 8"
df1 <- read.table(text = df1, header = TRUE, check.names = FALSE)
suppressPackageStartupMessages({
library(ggplot2)
library(dplyr)
library(tidyr)
})
df1 %>%
pivot_longer(starts_with("Day"), names_to = "day_num", values_to = "germination") %>%
mutate(day_num = stringr::str_extract(day_num, "\\d+"),
day_num = as.integer(day_num)) %>%
ggplot(aes(day_num, germination, color = `Phase 2`)) +
geom_line() +
labs(x = "Day", y = "Germination") +
facet_grid(rows = vars(`Phase 1`)) +
theme_bw()
创建于 2023-01-03 reprex v2.0.2
注意:上图未使用Source
,因为发布的数据示例只有一个来源。如果有更多来源,可能可以选择使用
facet_grid(`Phase 1` ~ Source)
关于r - 如何在R中的一张图中放置多条时间序列线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74988944/