无法生成多个底图
unable to generate multiple basemap plots
我需要依次生成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)
我收到错误
- 类型错误:'AxesSubplot' 对象不可订阅
如何纠正此错误以生成 5 个底图(不是 5 个子图,而是 5 个单独的图)
问题是您在 Basemap 调用中使用 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)
我需要依次生成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)
我收到错误
- 类型错误:'AxesSubplot' 对象不可订阅
如何纠正此错误以生成 5 个底图(不是 5 个子图,而是 5 个单独的图)
问题是您在 Basemap 调用中使用 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)