以下代码在一张图中给出了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循环获取此输出。我已经尝试了几件事,但是没有任何效果。有人可以帮我吗?谢谢
答案 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(...)