r - 如何为 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")
解决方案
您可以分离'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)
推荐阅读
- r - 检索顶部和底部值 R 数据框
- python - Pandas to_datetime 添加了 1900 年,而我将格式指定为月份日期和时间
- javascript - Highcharts 无需按住 panKey 即可启用平移
- javascript - 我如何在本地存储中存入一笔款项?
- python - 将 numpy 数组的所有元素设置为零与创建一个新的零数组
- flask - Flask - Request.form.get data from element in for loop
- python - 由于 numpy.core._exceptions._ArrayMemoryError 使用 pandas compare(),如何在 Lambda 中释放内存
- asp.net-core - 表示层和应用层的DTO定义
- java - 使用 java 通过课堂 api 向课程播报文本
- jquery - 带有条件的jquery表排序器