我有一个数据框,其中包含年份列 (1980-2009) 和 16 列,其中包含来自 16 个不同模型的气象数据。因此每个值代表一年和一个模型的年值。 下面是一些代码,可以很容易地重现:
set.seed(20)
df <- as.data.frame(matrix(rnorm(120), 30, 16))
df[,17] <- 1980:2009
df <- df[,c(17,1:16)]
colnames(df) <- c("Year", "Model 1", "Model 2", "Model 3", "Model 4", "Model 5", "Model 6", "Model 7", "Model 8",
"Model 9","Model 10", "Model 11", "Model 12", "Model 13", "Model 14", "Model 15", "Model 16")
现在我想用 ggplot2 来绘制它。目标是在一个图中包含多条不同颜色的线,每条线代表一个不同的模型。理想情况下,您应该能够选择每条线的颜色。
我已经检查过假设的类似问题,例如这两个问题: Question1 Question2
但是他们中没有一个真正适合我的例子。
有人指点一下吗?
最佳答案
ggplot 需要长数据而不是宽数据。您可以使用 tidyr 的 pivot_longer
,但还有其他功能,例如 reshape。
library(tidyverse)
set.seed(20)
df <- as.data.frame(matrix(rnorm(30*16), 30, 16))
df[,17] <- 1980:2009
df <- df[,c(17,1:16)]
colnames(df) <- c("Year", "Model 1", "Model 2", "Model 3", "Model 4", "Model 5", "Model 6", "Model 7", "Model 8",
"Model 9","Model 10", "Model 11", "Model 12", "Model 13", "Model 14", "Model 15", "Model 16")
df %>%
as_tibble() %>%
pivot_longer(-1) %>%
ggplot(aes(Year, value, color = name)) +
geom_point() +
geom_line()
要获得更多插值线,您可以尝试 ggalt
的 x 样条方法
df %>%
as_tibble() %>%
pivot_longer(-1) %>%
filter(grepl("12|13|14", name)) %>%
ggplot(aes(Year, value, color = name)) +
geom_point() +
ggalt::geom_xspline()
关于r - 使用ggplot2绘制不同颜色的多条线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68754862/