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

Python:基于单X轴从DataFrame绘制多幅图表的问题

解决多DataFrame列的独立图表绘制问题

别担心,第一次发帖完全没问题!我来帮你搞定这个循环绘制独立图表的需求~

首先咱们先梳理下你当前代码的几个小问题:

  • 你的DataFrame里X轴列名是Time,但代码里写的是'System Time',这会导致找不到列的错误
  • 默认的data.plot()会把所有图绘制在同一个画布上,所以你看到的是叠加的图,而不是独立的3幅

下面是针对你的需求(支持成百列的循环实现)的可行解决方案:

完整代码示例

import pandas as pd
import matplotlib.pyplot as plt

# 读取数据(实际使用时替换成你的read_csv即可)
data = pd.DataFrame({
    'Time': [0, 10, 20, 30],
    'Pressure': [100, 105, 110, 106],
    'Static Temperature': [50, 55, 59, 57],
    'Stag Temperature': [75, 77, 81, 79]
})

# 循环遍历所有需要作为Y轴的列(排除Time列)
for y_col in data.columns[data.columns != 'Time']:
    # 创建新的画布,确保每个图表完全独立
    plt.figure(figsize=(8, 5))  # 可根据需求调整图表大小
    # 绘制折线图,指定X轴为Time,Y轴为当前循环的列
    data.plot(x='Time', y=y_col, ax=plt.gca(), linewidth=2)
    
    # 设置图表标题和轴标签,提升可读性
    plt.title(f'{y_col} vs Time', fontsize=14)
    plt.xlabel('Time', fontsize=12)
    plt.ylabel(y_col, fontsize=12)
    
    # 自动调整布局,避免标签被截断
    plt.tight_layout()
    
    # 如果需要批量保存图表,取消下面注释即可,文件名自动用列名命名
    # plt.savefig(f'{y_col}_vs_time.png', dpi=150)
    
    # 显示当前图表(交互式环境下会弹出独立窗口)
    plt.show()

代码关键点解释

  • 独立画布:每次循环调用plt.figure(),会创建一个全新的绘图窗口,确保每幅Y轴列的图表都是分开的
  • 过滤Y轴列:用data.columns[data.columns != 'Time']排除X轴的Time列,避免重复绘制无效图表
  • 自定义样式:添加标题、轴标签、调整线条宽度和图表尺寸,让成百个图表都保持清晰易读的风格
  • 批量保存适配:如果要处理几百列,plt.savefig()可以自动用列名命名保存的图片,方便后续统一查看

额外优化建议

如果你的DataFrame有几百列,还可以做这些适配:

  • 关闭交互式显示:注释掉plt.show(),只保留plt.savefig(),避免弹出几百个窗口
  • 设置统一绘图风格:比如用plt.style.use('seaborn-v0_8')来设置美观的默认样式
  • 调整图表尺寸:根据你的需求修改figsize参数,确保小图表也能看清数据趋势

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:45:01