r - 使用ggplot2绘制不同颜色的多条线

标签 r ggplot2

我有一个数据框,其中包含年份列 (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

但是他们中没有一个真正适合我的例子。

使用相同数据的 Excel 的结果应该与此类似: enter image description here

有人指点一下吗?

最佳答案

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() 

enter image description here

要获得更多插值线,您可以尝试 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()

enter image description here

关于r - 使用ggplot2绘制不同颜色的多条线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68754862/

相关文章:

r - 使用 ggplot2 创建具有 95% CI 的平均加类时间变化的折线图

r - 在 ggplot2 : How to add an extra variable with a different scale? 中绘制多个密度

r - 淡出面板的一侧以指示正在进行的时间

regex - R索引字符串带有指示核苷酸变体的字符 block

c - 我该如何修复这个 C 代码/BLAS 错误?

从 ggpattern 中删除图例

从数据框中删除所有值为 NA 的列

r - 使用 R 计算剧集/事件的长度

r - 如何在一个图例中结合 alpha 和颜色

带有 ggplot 的 R 样式轴