невозможно сгенерировать несколько графиков базовой карты

#matplotlib-basemap

#matplotlib-базовая карта

Вопрос:

Мне нужно сгенерировать 5 графиков базовой карты один за другим, проверяемый код:

 fig, axes = plt.subplots(nrows=1, ncols=1)
for i in np.arange(0,5,1):
                     map = Basemap(projection='cyl',ax=axes[i],llcrnrlat= 4,urcrnrlat= 50,
                                                                        resolution='c', llcrnrlon=45,urcrnrlon=125)
                     map.drawparallels(np.arange(4,50,6),labels=[1,0,0,0],linewidth=0,fontsize=8)
                     map.drawmeridians(np.arange(45,125,8),labels=[0,0,0,1],linewidth=0,fontsize=8)
                     map.drawcountries(linewidth=1.5)
                     map.drawcoastlines(linewidth=1.5) 
 

Я получаю сообщение об ошибке

  1. Ошибка типа: объект ‘AxesSubplot’ не поддается подписке

Как мне исправить эту ошибку, чтобы сгенерировать 5 графиков базовой карты (не 5 подзаголовков, а 5 отдельных графиков)

Ответ №1:

Проблема в том, что вы указываете ось в своем вызове базовой карты, используя целые числа от 0 до 5, но созданная вами фигура имеет только одну ось (1 строка x 1 столбец). Удаление ax=axes[i] устранит ошибку. Тем не менее, я думаю, вам захочется создать новую фигуру внутри вашего цикла, а не снаружи, чтобы каждый раз получать новый график:

 for i in np.arange(0,5,1):
                 fig = plt.figure()
                 map = Basemap(projection='cyl',llcrnrlat= 4,urcrnrlat= 50,
                                                                    resolution='c', llcrnrlon=45,urcrnrlon=125)
                 map.drawparallels(np.arange(4,50,6),labels=[1,0,0,0],linewidth=0,fontsize=8)
                 map.drawmeridians(np.arange(45,125,8),labels=[0,0,0,1],linewidth=0,fontsize=8)
                 map.drawcountries(linewidth=1.5)
                 map.drawcoastlines(linewidth=1.5)
                 plt.savefig("test%s.png" % (str(i)))
                 plt.close(fig)