Получить несколько графиков через цикл for вместо Python вручную - PullRequest
0 голосов
/ 02 сентября 2018

Следующий код дает 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 голосов
/ 02 сентября 2018

С 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(...)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...