使用Python中的底图绘制时无组织的子图

时间:2018-05-14 15:40:48

标签: python-2.7 matplotlib-basemap

我试图在一个带底图的循环中绘制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()

0 个答案:

没有答案