我试图在一个带底图的循环中绘制3个图形(每个图形包含6行和2列中的12个子图)。出于某种原因,每个图只绘制了10个子图(从不是前两个图),其中10个子图中有3个错误地放在图中。
我一直在拍摄我的代码超过一个小时,我仍然无法看到问题。那里有人可以吗?提前谢谢!
这是我的代码:
# Imports
import matplotlib.cm as cm
import matplotlib as mpl
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
import numpy.ma as ma
import numpy as np
# Parameter Set-Up
N = ['A', 'B', 'C']
LAYER = ['1', '2', '3', '4', '5', '6']
data = np.random.randint(101, size=(len(N),2*len(LAYER),Lat_1x1,Lon_1x1))
# Basemap Set-Up
llc_LON = 139.5
urc_LON = 280.5
llc_LAT = -29.5
urc_LAT = 29.5
# Colorbar Boundary Definitions
cmap_data = cm.rainbow_r
cmap_data.set_bad(color='white')
data_plot = np.ma.array ( data, mask=np.isnan(data)) # Mask NaN
bounds_data = np.arange(0, 102, 2)
norm_data = mpl.colors.BoundaryNorm(bounds_data, cmap_data.N)
for n in np.arange(len(N)):
for L in np.arange(2*len(LAYER)):
plt.subplot(621+L)
m = Basemap(projection='cyl', llcrnrlon=llc_LON, urcrnrlon=urc_LON, llcrnrlat=llc_LAT, urcrnrlat=urc_LAT, resolution='c')
m.drawcoastlines(color='k')
m.fillcontinents(color='white') # mask land mass
lons, lats = np.meshgrid(lon,lat)
x, y = m(lons,lats)
m.pcolor(x, y, data_plot[n,L], cmap=cmap_data, norm=norm_data)
plt.xlim(llc_LON, urc_LON)
plt.xticks([150, 180, 210, 240, 270], ['150E', 'D', '150', '120', '90W']) # 140W to 80E
plt.ylim(llc_LAT, urc_LAT)
plt.yticks([-30, -15, 0, 15, 30], ['30S', '15S', '0', '15N', '30N']) # 30S to 30N
if L == 10 or L == 11:
plt.xlabel('Longitude')
plt.ylabel('Latitude')
plt.grid()
plt.subplots_adjust(bottom=0.1, right=0.8, top=0.9)
cax = plt.axes([0.82, 0.1, 0.075, 0.8])
plt.colorbar(cax=cax, label='%')
plt.suptitle('Test for '+N[n])
plt.show()