是否可以遍历matplotlib图形的子图?

时间:2019-10-24 21:04:09

标签: python for-loop matplotlib

所以我有一个包含16个子图,4列和4行的图形。首先,在继续使循环正常工作之前,我专注于使子图处于(0,0)位置以正常工作(这是我想出来的!)。

那就是我被困住的地方。这是我代码的matplotlib部分的样子:

new_list = [one, two, three, four, five, six, seven, eight, nine, ten , eleven, twelve, 
    thirteen, fourteen, fifteen, sixteen]
color = ['blue','red']

for name in new_list:
    for row in range(0,subplot_shape[0]):
        for col in range(0,subplot_shape[1]):
            display.plot('total', 
                        currentname=name,
                        subplot_index=(row,col),
                        linestyle='-',
                        marker='.',
                        label="RG",
                        color=color[0])
            display.plot('new_total', 
                        currentname=name,
                        subplot_index=(row,col),
                        linestyle='-',
                        marker='.',
                        label="RG New",
                        color=color[1])
            display.axes[row][col].set_title(name + ' Total on ' + date)
            display.axes[row][col].legend()
            display.axes[row][col].autoscale(tight=False, axis='y')
            display.axes[row][col].set_xlim(xrng)

使用我目前设置的方式,所有内容都会绘制在每个子图中。我不确定自己在做什么错。

我希望每个子图都有以“ new_list”命名的每个数据集的内容。 (因此,子图(0,0)将具有数据集1,子图(0,1)将具有数据集2,依此类推。

1 个答案:

答案 0 :(得分:1)

使用面向对象的API:fig, axes = plt.subplots(nrows=4, ncols=4)

然后,您可以遍历以下行/列:

for row, axes_row in enumerate(axes):
    for col, ax in enumerate(axes_row): 
        # do your stuff
        ax.plot(...)