Python: subplot внутри цикла: первая панель отображается в неправильном положении

Я довольно новичок в Python и пришел с большей точки зрения Matlab. Я пытаюсь сделать серию подстроек из 2 x 5 панелей. Мой подход до сих пор заключался в том, чтобы преобразовать (до некоторой степени) мой код Matlab в Python и построить мои подзадачи в цикле. Относительная часть кода выглядит так:

fig=plt.figure(figsize=(15, 6),facecolor='w', edgecolor='k') for i in range(10): #this part is just arranging the data for contourf ind2 = py.find(zz==i+1) sfr_mass_mat = np.reshape(sfr_mass[ind2],(pixmax_x,pixmax_y)) sfr_mass_sub = sfr_mass[ind2] zi = griddata(massloclist, sfrloclist, sfr_mass_sub,xi,yi,interp='nn') temp = 250+i # this is to index the position of the subplot ax=plt.subplot(temp) ax.contourf(xi,yi,zi,5,cmap=plt.cm.Oranges) plt.subplots_adjust(hspace = .5,wspace=.001) #just annotating where each contour plot is being placed ax.set_title(str(temp)) 

Как новичок в этом форуме, я, похоже, не могу прикрепить полученный образ. Однако, перейдя по моему индексированию в коде как «temp», результирующий макет панелей 2 x 5:

 251 - 252 - 253 - 254 - 255 256 - 257 - 258 - 259 - 250 

Однако я хочу, чтобы

 250 - 251 - 252 - 253 - 254 255 - 256 - 257 - 258 - 259 

То есть первая панель (250) появляется в последней позиции, где, я думаю, должно быть 259. И, кажется, 251, где я хочу разместить 250. Кажется, что все они находятся в правильной последовательности, только круговой сдвиг на один.

Я знаю, что это будет что-то очень глупое, но оцените любую помощь, которую вы можете дать.

Заранее спасибо.

3 Solutions collect form web for “Python: subplot внутри цикла: первая панель отображается в неправильном положении”

Используя ваш код с некоторыми случайными данными, это будет работать:

 fig, axs = plt.subplots(2,5, figsize=(15, 6), facecolor='w', edgecolor='k') fig.subplots_adjust(hspace = .5, wspace=.001) axs = axs.ravel() for i in range(10): axs[i].contourf(np.random.rand(10,10),5,cmap=plt.cm.Oranges) axs[i].set_title(str(250+i)) 

Макет не слишком велик, но из-за ваших текущих настроек (figsize, wspace и т. Д.).

введите описание изображения здесь

Проблема заключается в использовании subplot индексации. Подсчеты подсчитываются начиная с 1! Таким образом, ваш код должен быть прочитан

 fig=plt.figure(figsize=(15, 6),facecolor='w', edgecolor='k') for i in range(10): #this part is just arranging the data for contourf ind2 = py.find(zz==i+1) sfr_mass_mat = np.reshape(sfr_mass[ind2],(pixmax_x,pixmax_y)) sfr_mass_sub = sfr_mass[ind2] zi = griddata(massloclist, sfrloclist, sfr_mass_sub,xi,yi,interp='nn') temp = 251+i # this is to index the position of the subplot ax=plt.subplot(temp) ax.contourf(xi,yi,zi,5,cmap=plt.cm.Oranges) plt.subplots_adjust(hspace = .5,wspace=.001) #just annotating where each contour plot is being placed ax.set_title(str(temp)) 

Обратите внимание на изменение в строке, где вы вычисляете temp

В основном то же решение, что и Rutger Kassies , но с использованием более пифонического синтаксиса:

 fig, axs = plt.subplots(2,5, figsize=(15, 6), facecolor='w', edgecolor='k') fig.subplots_adjust(hspace = .5, wspace=.001) data = np.arange(250, 260) for ax, d in zip(axs.ravel(), data): ax.contourf(np.random.rand(10,10), 5, cmap=plt.cm.Oranges) ax.set_title(str(d)) 
  • как удалить «пустое» пространство между подзаголовками?
  • Matplotlib: получение подзаголовков для заполнения фигуры
  • Как получить несколько подзадач в matplotlib?
  • Неправильное расположение цветных панелей при использовании подзаголовков (matplotlib)
  • глобальная легенда для всех подзаговоров
  • Размер рисунка при использовании plt.subplots
  • Matplotlib - добавление подзаголовков в подзаголовок?
  • Несколько цифр в одном окне
  • Python - лучший язык программирования в мире.