首页 > 解决方案 > 如何为 Y 有 2 个系列的多列绘制新图表

问题描述

我有一个数据集 df1。我想用日期为 X 和 Chart1 和 T1 绘制折线图。我想为所有列循环它,当 Y 是 Chart2 和 T2 以及 Y 是 Chart3 和 T3 时,我会得到相同的图表。

dput(df1) >
structure(list(Date = c(1990, 1991, 1992, 1993, 1994), Chart1 = c(25, 
34, 19, 7, 4), T1 = c(23.5, 23.5, 23.5, 23.5, 23.5), Chart2 = c(2, 
4, 12, 9, 15), T2 = c(10, 10, 10, 10, 10), Chart3 = c(11, 9, 
8, 6, 2), T3 = c(5, 5, 5, 5, 5)), row.names = c(NA, -5L), class = c("tbl_df", 
"tbl", "data.frame"))

这是我想为每一列 (Chart2,T2) 和 (Chart3,T3) 等获取的图表。 ggplot(df1, aes(x=Date)) + geom_line(aes(y=Chart1)) + geom_line(aes(y=T1), color="red")

在此处输入图像描述

标签: r

解决方案


您可以分离'Chart'变量和'T'变量并创建绘图列表。

library(ggplot2)

chart_cols <- grep('Chart', names(df1), value = TRUE)
t_cols <- grep('T\\d+', names(df1), value = TRUE)

list_plots <- Map(function(x, y) ggplot(df1, aes(x=Date)) + 
  geom_line(aes(y=.data[[x]])) +  
    geom_line(aes(y=.data[[y]]), color="red"), chart_cols, t_cols)

推荐阅读