You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在不使用pivot_longer的情况下批量绘制多列ts对象折线图

解决方案:批量生成独立折线图,保留ts对象

不用手动逐个创建3个图,通过批量遍历的方式就能用一套代码完成,同时完全保留原数据里的ts对象。

步骤1:构造示例数据

先复现你的数据(加个set.seed保证结果可重复):

library(tidyverse)

set.seed(123)
df <- data.frame(time = 1:10, ts1 = rnorm(10), ts2 = rnorm(10,2,50), ts3 = rpois(10, 20)) %>% 
  mutate(across(2:4, ts))

步骤2:用purrr::map批量生成独立图

遍历所有ts列的名称,对每个列生成以time为x轴、对应ts列为y轴的折线图:

# 提取ts列的名称(排除time列)
ts_cols <- names(df)[-1]

# 批量生成图
plots <- map(ts_cols, function(col) {
  ggplot(df, aes(x = time, y = .data[[col]])) +
    geom_line(color = "steelblue", linewidth = 1) +
    labs(title = paste("时间序列:", col), x = "时间", y = "数值") +
    theme_minimal()
})

执行后,plots是一个包含3个ggplot对象的列表,直接调用plots[[1]]、plots[[2]]就能查看单个图。

可选:用patchwork拼接成组合图

如果需要把三个图放在同一张输出里(每个图独立坐标轴,适配数值差异大的情况),用patchwork包:

library(patchwork)

# 按1列3行排列拼接
combined_plot <- plots[[1]] / plots[[2]] / plots[[3]]
print(combined_plot)

核心优势

  • 原数据的ts对象完全保留,不影响后续分析
  • 只用一套逻辑完成所有图的生成,无需重复编写绘图代码
  • 每个图都是独立的,坐标轴自动适配各自序列的数值范围,完美适配序列差异大的场景

内容的提问来源于stack exchange,提问作者Théodore Targerian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 13:42:11