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

Python绘制配对列时间序列图求助:模拟与监测数据无法同图展示

解决批量绘制模拟与监测数据时间序列图的问题

原代码的核心问题

  • 语法错误:plt.figure 调用缺少闭合括号
  • 未初始化坐标轴对象 ax,导致无法在同一图中绘制两条曲线
  • 两条曲线的 label 重复,无法区分模拟/监测数据
  • 缺少必要的绘图元素(图例、标题、坐标轴标签)及图的显示/保存逻辑

修正后的完整代码

import pandas as pd
import matplotlib.pyplot as plt

# 1. 读取Excel数据到DataFrame
df_Plot = pd.read_excel("你的Excel文件路径.xlsx")

# 2. 定义模拟数据和监测数据的列名列表
# 示例:根据你的实际列名调整,确保两组列表长度一致(各30个)
parameters_model = ["pH", "WQ[SO4,Dissolved]", ...]  # 30个模拟数据列名
parameters_monitor = ["pH data", "WQ data[SO4,Dissolved]", ...]  # 对应30个监测数据列名

# 3. 生成配对列表
parameters_pair = zip(parameters_model, parameters_monitor)

# 4. 批量绘图
for model_col, monitor_col in parameters_pair:
    # 创建画布和坐标轴(每一组配对生成一张独立的图)
    fig, ax = plt.subplots(figsize=(10, 7))
    
    # 绘制模拟数据曲线
    ax.plot(df_Plot['Tstamps'], df_Plot[model_col],
            label="模拟数据", color='blue', linestyle='solid')
    # 绘制监测数据散点
    ax.plot(df_Plot['Tstamps'], df_Plot[monitor_col],
            label="监测数据", color='orange', marker='s', markersize=4, linestyle='')
    
    # 添加绘图元素
    ax.set_title(f"{model_col} 模拟vs监测数据时间序列", fontsize=12)
    ax.set_xlabel("时间", fontsize=10)
    ax.set_ylabel(model_col, fontsize=10)
    ax.legend()  # 显示图例
    ax.grid(alpha=0.3)  # 添加网格线
    
    # 可选:保存图片(按参数名命名)
    plt.savefig(f"{model_col}_对比图.png", dpi=300, bbox_inches='tight')
    # 显示图片(交互式环境可用)
    plt.show()
    # 关闭画布释放内存
    plt.close()

关键修正点说明

  • 用 plt.subplots() 同时创建画布和坐标轴,确保每组配对对应独立绘图区域
  • 为两条曲线设置不同的 label,通过图例清晰区分模拟/监测数据
  • 添加标题、坐标轴标签和网格,提升图表可读性
  • 增加图片保存逻辑,按参数名自动命名文件,避免覆盖
  • 循环结束后关闭画布,防止内存占用过高

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 13:10:24