在东西方向剪切的底图(不包装)

时间:2014-08-20 18:23:30

标签: python python-2.7 matplotlib matplotlib-basemap

我在底图上绘制了一个全局2.5度数据字段(144,72)。我认为一切正常,直到我注意到地图在E-W方向上不连续。图片发布在

http://imgur.com/P2pjZC8

请注意,英国东部的禁区未显示在底图的左侧。我确定我做的事情很愚蠢。我不确定这是数据读取问题还是底图问题。感谢。

precipfile = "/Users/bolvin/oc.197901.sg"
num_lon = 144
num_lat = 72

fileobj = open(precipfile, mode='rb')

data = np.fromfile (fileobj, dtype ='f')

data.byteswap(True)

datat = np.reshape(data, (num_lon, num_lat), order = 'FORTRAN')

datamasked = np.ma.masked_where(datat < 0.0, datat)

my_cmap = matplotlib.colors.LinearSegmentedColormap('my_colormap',uneven_rgb)

my_cmap.set_bad('k', 0.8)

plt.figure(figsize = (20,10))

mapproj = Basemap(projection = 'cyl', llcrnrlat=-90.0, llcrnrlon=0.0, urcrnrlat=90.0, urcrnrlon=360.0)

mapproj.drawcoastlines()
mapproj.drawcountries()
mapproj.drawparallels(np.array([-90.0,-60.0,-30.0, 0.0, 30.0, 60.0, 90.0]), labels=[0,0,0,0])
mapproj.drawmeridians(np.array([0.0, 90.0, 180.0, 270.0, 360.0]), labels=[0,0,0,0])


myplot = plt.imshow(datamasked.T, interpolation = 'nearest', cmap = my_cmap, \
norm = matplotlib.colors.Normalize(vmin = 0.0, vmax = 20.0, clip = False), \
extent = (0.0, 360.0, -90.0, 90.0))

1 个答案:

答案 0 :(得分:1)

我回答了自己的问题。显然,默认分辨率='c'完全抹杀了英国东部。将分辨率设置为上一级,“l”,有效。