使用R+ggplot2按df2类型分组绘制df1同类型列时间序列图实现方法
实现代码
你可以基于原有代码,先把列和类型的映射关联到长表数据中,再按类型循环绘图即可,完整代码如下:
library(ggplot2) library(data.table) library(reshape2) # 原有数据预处理步骤 df1$date <- as.Date(df1$date) df1.m <- melt(df1, id = "date") # 转为长表格式 # 关联df2的类型映射,先转字符避免因子匹配异常 df2$columns <- as.character(df2$columns) df2$type <- as.character(df2$type) df1.m <- merge(df1.m, df2, by.x = "variable", by.y = "columns", all.x = TRUE) # 按type分组循环绘图保存 for (current_type in unique(df1.m$type)) { # 筛选当前类型对应的所有数据 sub_data <- df1.m[df1.m$type == current_type, ] # 绘制折线图 plot_obj <- ggplot(data = sub_data, aes(x = date, y = value, colour = variable)) + geom_line(size = 1, alpha = 1) # 按类型名称保存图片,width和height可按需调整 ggsave(paste0(current_type, ".png"), plot = plot_obj, width = 8, height = 5) }
逻辑说明
- 先通过
merge函数把df2中定义的列-类型对应关系,匹配到df1的长表中,给每个指标列打上type标签 - 遍历所有唯一的type值,每次仅筛选对应类型的数据绘图,保存文件名直接用type名拼接
.png,运行后就会自动生成price.png、quantity.png、pct_change.png三张图片
内容的提问来源于stack exchange,提问作者ah bon
相关产品推荐
相关产品推荐

