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

如何用Matplotlib将解析后的多时间序列数据绘制成单图多折线?

在Matplotlib中绘制多时间序列折线图

嘿,我来帮你搞定这个!你已经把时间序列数据整理成「序列标签为键、(time, value)元组列表为值」的字典,这一步已经为绘图打好了基础。接下来用Matplotlib在同一张图里绘制每个序列的独立折线其实很简单,我给你一步步演示:

步骤1:导入必要的库

首先确保你已经安装了matplotlib,如果需要处理字符串格式的时间,还可以导入datetime工具:

import matplotlib.pyplot as plt
from datetime import datetime  # 处理时间字符串转datetime对象用

步骤2:确认你的数据结构

假设你的字典长这样(模拟你的实际数据):

# 示例数据:键是序列名称,值是(time, value)元组列表
time_series_dict = {
    "温度传感器A": [(datetime(2024, 5, 1), 22.5), (datetime(2024, 5, 2), 24.1), (datetime(2024, 5, 3), 23.3)],
    "温度传感器B": [(datetime(2024, 5, 1), 21.8), (datetime(2024, 5, 2), 23.5), (datetime(2024, 5, 3), 22.9)],
    "湿度传感器": [(datetime(2024, 5, 1), 65), (datetime(2024, 5, 2), 62), (datetime(2024, 5, 3), 68)]
}

如果你的time是字符串格式(比如"2024-05-01"),记得先转成datetime对象,不然Matplotlib无法正确识别时间轴:

# 时间字符串转datetime的示例
time_series_dict["温度传感器A"] = [(datetime.strptime(t_str, "%Y-%m-%d"), val) for t_str, val in time_series_dict["温度传感器A"]]

步骤3:绘制多折线图

接下来创建画布,遍历字典的每个序列,拆分时间和数值后逐一绘制:

# 创建画布和轴对象,设置合适的尺寸
fig, ax = plt.subplots(figsize=(10, 6))

# 遍历字典中的每个时间序列
for series_name, data_points in time_series_dict.items():
    # 把元组列表拆成独立的时间列表和数值列表
    timestamps = [t for t, val in data_points]
    values = [val for t, val in data_points]
    # 绘制折线,添加标记点和序列名称作为图例标签
    ax.plot(timestamps, values, marker='o', linestyle='-', label=series_name)

# 添加图表元素,提升可读性
ax.set_xlabel("日期")
ax.set_ylabel("数值")
ax.set_title("多传感器时间序列对比")
ax.legend()  # 显示图例,区分不同序列
plt.xticks(rotation=45)  # 旋转x轴标签,避免重叠

# 自动调整布局并显示图表
plt.tight_layout()
plt.show()

小技巧

  • 可以自定义折线的样式,比如color指定颜色、linestyle设置线型(--虚线、:点线等),让不同序列更易区分
  • 如果时间轴刻度太密集,可使用matplotlib.dates模块的工具来格式化刻度
  • 若数据量很大,建议关闭标记点(去掉marker='o'),避免图表过于杂乱

这样就能在同一张图里清晰展示所有时间序列的变化趋势啦!

内容的提问来源于stack exchange,提问作者Mike Sweeney

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 07:09:14