首页 > 解决方案 > 根据 col_z 信息从数据表(col_x 和 col_y)中获取 matplotlib 中的多个子图

问题描述

我的表中有 4 列,包括 die_id、数据、时间和间隔。我想根据 nrows 的 len(die_id) 和 cols 的 len(interval) 创建子图。

我尝试了以下代码,但它不起作用,因为轴是 numpy.ndarray。如何解开索引并使其工作?请指教。谢谢。


nrows = len(df['die_id'].unique())
ncols = len(df['interval'].unique())

fig, axes = plt.subplots(nrows=nrows, ncols=ncols, figsize=(20,15))

for subplot_number, (die_id, data) in enumerate(df.groupby(['die_id','interval'])):
    axes[subplot_number].plot(data['time_inspect'], data['mean_vc'])
    axes[subplot_number].set_title('DieID: {}'.format(die_id))
    axes[subplot_number].set_ylabel('mean_vc (V)')
    axes[subplot_number].set_xlabel('time_inspect')

plt.tight_layout()
plt.show()

标签: python-3.xmatplotlib

解决方案


您需要使用行和列索引访问子图:

nrows = len(df['die_id'].unique())
ncols = len(df['interval'].unique())

fig, axes = plt.subplots(nrows=nrows, ncols=ncols, figsize=(20,15))

for subplot_number, (die_id, data) in enumerate(df.groupby(['die_id','interval'])):
    row = subplot_number // nrows
    col = subplot_number % nrows
    axes[row][col].plot(data['time_inspect'], data['mean_vc'])
    axes[row][col].set_title('DieID: {}'.format(die_id))
    axes[row][col].set_ylabel('mean_vc (V)')
    axes[row][col].set_xlabel('time_inspect')

plt.tight_layout()
plt.show()

推荐阅读