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

如何用df.plot将多个DataFrame对应列绘制到同一子图?

高效批量绘制同名列子图的简洁方案

问题描述

我有60个结构完全相同的DataFrame,每个都包含6列。想要将所有DataFrame的同名列绘制在同一个图的对应子图中(例如所有Data1列放在第一个子图)。使用df.plot循环绘制时会生成多个独立图,目前通过手动循环axes对象实现需求,希望找到更简洁的实现方式,且不需要将每个DataFrame单独放在子图中。

示例代码

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# 生成示例数据
df1 = pd.DataFrame(np.random.rand(50,6)*100, columns = ['Data1', 'Data2', 'Data3', 'Data4', 'Data5', 'Data6'])
df2 = pd.DataFrame(np.random.rand(50,6)*100, columns = ['Data1', 'Data2', 'Data3', 'Data4', 'Data5', 'Data6'])
df3 = pd.DataFrame(np.random.rand(50,6)*100, columns = ['Data1', 'Data2', 'Data3', 'Data4', 'Data5', 'Data6'])
df = [df1,df2,df3]

# 原方法:生成多个独立图
for frame in df:
    frame.plot(subplots = True, layout = (2,3))

# 当前手动实现方式
fig, ax = plt.subplots(2,3)
for frame in df:
    ax[0,0].plot(frame['Data1'])
    ax[0,1].plot(frame['Data2']) 
# 以此类推,需要手动写每个子图的绘制逻辑

简洁解决方案

通过按列名匹配子图的方式,避免手动指定每个axes的位置,代码更简洁且扩展性强:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# 生成示例数据(实际场景替换为你的60个DataFrame列表)
df1 = pd.DataFrame(np.random.rand(50,6)*100, columns = ['Data1', 'Data2', 'Data3', 'Data4', 'Data5', 'Data6'])
df2 = pd.DataFrame(np.random.rand(50,6)*100, columns = ['Data1', 'Data2', 'Data3', 'Data4', 'Data5', 'Data6'])
df3 = pd.DataFrame(np.random.rand(50,6)*100, columns = ['Data1', 'Data2', 'Data3', 'Data4', 'Data5', 'Data6'])
df_list = [df1, df2, df3]

# 创建2行3列的子图布局
fig, axes = plt.subplots(2, 3, figsize=(12, 8))
# 将二维axes数组展平为一维,方便和列名一一对应
axes_flat = axes.flatten()
# 获取统一的列名列表
cols = df_list[0].columns

# 遍历列名和对应子图
for col, ax in zip(cols, axes_flat):
    # 把所有DataFrame的当前列画到对应子图
    for df in df_list:
        ax.plot(df[col])
    ax.set_title(col)  # 设置子图标题为列名

# 自动调整子图间距
plt.tight_layout()
plt.show()

方案优势

  • 无需手动指定ax[0,0]这类子图位置,列数或布局调整时只需修改subplots的参数即可
  • 循环逻辑清晰:先按列分配子图,再批量绘制所有DataFrame的对应列,60个DataFrame也能轻松处理
  • 自动匹配列名和子图,减少重复代码,降低出错概率

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 23:44:50