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

问题描述 投票:0回答:1

以下代码在一个图中给出了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循环得到这个输出。我尝试了几件事,但没有任何作用。谁能帮助我?谢谢

python matplotlib plot
1个回答
0
投票

使用axes.flatten(),您将获得包含所有轴的1-dimensionarray,您可以迭代它们而无需手动解压缩它们。

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(...)
© www.soinside.com 2019 - 2024. All rights reserved.