2016-01-28 1 views
-1

Я хочу использовать subplot2grid в цикле, но не могу прикрепить imshow к переменной цикла:Subplot2grid в цикле

ax1 = plt.subplot2grid((6,8), (0,0), colspan=4, rowspan=2) 
ax2 = plt.subplot2grid((6,8), (2,0), colspan=4, rowspan=2) 
ax3 = plt.subplot2grid((6,8), (0,4), colspan=6, rowspan=2) 
ax4 = plt.subplot2grid((6,8), (2,4), colspan=6, rowspan=2) 
ax5 = plt.subplot2grid((6,8), (4,0), colspan=4, rowspan=2) 

galaxies= [...] 
a=[ax1, ax2, ax3, ax4, ax5] 

for i in range(0,5): 
    image = mpimg.imread(galaxies[i]+'_CombinedHistogram.png') 
    a[i].imshow(image) 

plt.show() 

В этой строке:

a[i].imshow(image) 

I получите следующее сообщение об ошибке: объект «AxesSubplot» не поддерживает индексирование.

Я видел этот ответ: Multiple `subplot2grid` in a for loop, но нет ли абсолютно никакого способа использовать subplot2grid и объект 'axes' в цикле for? Я чувствую, что у меня что-то не хватает. Спасибо за любые разъяснения!

EDIT: код

+0

вы действительно не должны изменить свой вопрос в редактировании , У вас есть новый вопрос, когда вы исправляете предыдущий, поэтому задайте новый вопрос – tom

+0

, ваш (обновленный) код отлично подходит для меня. Вы уверены, что используете 'a [i] .imshow' и не пытаетесь проиндексировать один из ваших объектов Axes? – tom

ответ

1

вы настраиваете элементы в a к строкам, а не оси объекты, созданные вами.

Изменить

a=['ax1', 'ax2', 'ax2', 'ax4', 'ax5'] 

в

a=[ax1, ax2, ax3, ax4, ax5] 

(там был также опечатка, где вы использовали ax2 дважды, нет ax3)

+0

Хороший звонок! Благодаря! Я редактирую вопрос. – AstroLorraine

Смежные вопросы