pyplot imshow() возвращает цикл с несколькими подзаголовками

data.shape
(800, 49, 6)

Я хочу сделать это в цикле, но я также хочу контролировать отдельные цветные полосы. Как назначить возврат из ax[].imshow() массиву, на который я могу ссылаться позже?

# 6 plots in one row
fig,ax = plt.subplots(1,6)  
im0 = ax[0].imshow(data[:,:,0])
im1 = ax[1].imshow(data[:,:,1])
im2 = ax[2].imshow(data[:,:,2])
im3 = ax[3].imshow(data[:,:,3])
im4 = ax[4].imshow(data[:,:,4])
im5 = ax[5].imshow(data[:,:,5])
fig.colorbar(im5,extend='max')

Хотите это в цикле. Как я могу объявить im[] как тип, который будет принимать возврат от ax.imshow()?

for i in np.arange(6):
  im[i] = ax[i].imshow(data[:,:,i])
fig.colorbar(im[5],extend='max')
``

person user13241266    schedule 17.07.2020    source источник


Ответы (1)


создайте пустой список и добавьте элементы в свой цикл.

im = []
for i in np.arange(6):
  im.append(ax[i].imshow(data[:,:,i]))
fig.colorbar(im[5],extend='max')

можно упростить до понимания списка (но это может быть труднее читать):

im = [ax[i].imshow(data[:,:,i]) for i in np.arange(6)]
person Diziet Asahi    schedule 17.07.2020