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

Pandas.DataFrameGroupBy分组子图绘制未达预期效果

问题:多子图绘图时所有图表堆叠在同一行,且多种解决方案触发无限循环

这是原提问的重开帖,原帖因被判定为重复帖关闭,但所有推荐的重复帖均无法解决问题,故再次发帖。

我有一个从hdf文件读取的、关联多台设备的时间序列DataFrame,代码如下:

from matplotlib import pyplot as plt
import numpy as np
import pandas as pd
from pandas import DataFrame


def open_dataset(file_name: str, name: str, combined_frame: DataFrame):
    data_set: DataFrame = pd.read_hdf(file_name, key=name)
    data_set['name'] = name
    combined_frame = pd.concat([combined_frame, data_set], axis=0)
    return combined_frame


if __name__ == '__main__':
    names = ['YRT1IN1E', 'YRT1LE1', 'YRT1MH1', 'YR08DT1ML']
    working_frame = DataFrame()

    for name in names:
        working_frame = open_dataset('data.h5', name, working_frame)

    grouped_frame = working_frame.groupby('name')

    fig, axs = plt.subplots(figsize=(10, 5),
                        nrows=4, ncols=1,
                        gridspec_kw=dict(hspace=0), sharex=True)

    axs = grouped_frame.get_group('YR08DT1ML').rawsum.plot()
    axs = grouped_frame.get_group('YRT1LE1').voltage.plot()
    axs = grouped_frame.get_group('YRT1MH1').current.plot()
    axs = grouped_frame.get_group('YRT1IN1E').current.plot()

    plt.show()

上述代码生成的输出中,所有绘图都堆叠在同一行,我希望每个图单独占一行,请问哪里出错了?

我尝试过以下方法,但均触发无限循环,无法正常绘图:

  • 指定子图位置的方法:
fig, axs = plt.subplots(nrows=2, ncols=2)
grouped_frame.get_group('YR08DT1ML').rawsum.plot(ax=axs[0,0])
grouped_frame.get_group('YR...').rawsum.plot(ax=axs[0,1])
grouped_frame.get_group('YR...').rawsum.plot(ax=axs[1,0])
grouped_frame.get_group('YR...').rawsum.plot(ax=axs[1,1])

变体写法得到和原代码一样的结果:

axes[0,0] = grouped_frame.get_group('YR08DT1ML').rawsum.plot()
axes[0,1] = grouped_frame.get_group('YR...').rawsum.plot()
...
  • 使用subplots=True参数:
grouped_frame.get_group('YR08DT1ML').rawsum.plot(subplots=True, layout=(1,2))
...
  • 手动添加子图:
fig=plt.figure()
ax1=fig.add_subplot(4,1,1)
ax2=fig.add_subplot(4,1,2)
ax3=fig.add_subplot(4,1,3)
ax4=fig.add_subplot(4,1,4)

grouped_frame.get_group('YR08DT1ML').rawsum.plot(ax=ax1)
...

我猜测问题可能和使用pandas.DataFrameGroupBy而非直接用pandas.DataFrame绘图有关。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 21:57:40