通过for循环而不是手动python获取多个图

时间:2018-09-02 19:30:18

标签: python matplotlib plot

以下代码在一张图中给出了10个不同的直方图(每行3个直方图:

plt.figure(figsize=(11,25))
fig, axes = plt.subplots(nrows=4, ncols=3, figsize=(15,15))
ax0, ax1, ax2, ax3, ax4, ax5, ax6, ax7, ax8, ax9, ax10, ax11 = axes.flatten()
ax0.hist(mY[0,:])
ax0.legend(["ONGC"])
ax1.hist(mY[1,:])
ax1.legend(["COAL"])
ax2.hist(mY[2,:])
ax2.legend(["IOCL"])
ax3.hist(mY[3,:])
ax3.legend(["GAIL"])
ax4.hist(mY[4,:])
ax4.legend(["POWF"])
ax5.hist(mY[5,:])
ax5.legend(["CCRI"])
ax6.hist(mY[6,:])
ax6.legend(["BHE"])
ax7.hist(mY[7,:])
ax7.legend(["OINL"])
ax8.hist(mY[8,:])
ax8.legend(["ENGR"])
ax9.hist(mY[9,:])
ax9.legend(["CPSE"])
plt.show()

但是,对于较大的数据(大约50个直方图),我也必须执行此操作,并且手动执行此操作需要花费大量时间。因此,我想使用for循环获取此输出。我已经尝试了几件事,但是没有任何效果。有人可以帮我吗?谢谢

1 个答案:

答案 0 :(得分:0)

借助axes.flatten(),您将获得一个包含所有轴的1-dimension阵列,您可以在它们上进行迭代,而无需拆开它们的包装并手动进行。

plt.figure(figsize=(11,25))
fig, axes = plt.subplots(nrows=4, ncols=3, figsize=(15,15))
ax = axes.flatten()
for i in range(12):
    ax[i].plot(...)

或者您可以直接做

nrows = 4
ncols = 3
plt.figure(figsize=(11,25))
fig, axes = plt.subplots(nrows=nrows, ncols=ncols, figsize=(15,15))
for row in range(nrows):
    for col in range(ncols):
        axes[row,col].plot(...)