底图“ Polar Projections”在绘制数据时遇到问题

时间:2019-09-02 10:31:30

标签: python matplotlib matplotlib-basemap polar-coordinates

我正在尝试绘制我使用北半球底图库从ECMWF(NC格式)下载的一些数据。它是一个网格数据(从南极到北极的721个网格点,从0到360度的1440个网格点)。

基本上,我使用了两个主要的投影:等距圆柱投影(圆柱)和极地兰伯特方位角投影(nplaea)。当我使用“ cyl”绘制数据(北半球矩阵的上半部分或全球的整个矩阵)时,一切正常,因为我正在寻找北欧发生的现象(0E〜30E, 60N)。但是,当我将投影更改为“ nplaea”(或其他极坐标投影之一)时,绘图会失真(该现象从其原点移至90W〜120W,5N)。当我将绘图方法从“ contourf”更改为“ pcolormesh”时,问题仍然存在。

在这里您可以找到我的代码的一部分:

my_dpi = 50
fig = plt.figure(figsize=(500/my_dpi, 500/my_dpi), dpi=my_dpi)
ax = fig.add_axes([0.1,0.1,0.8,0.8])

#m = Basemap(projection='cyl',llcrnrlat=0,urcrnrlat=90,\
#            llcrnrlon=0,urcrnrlon=360,resolution='c')
lon_0 = 0; lat_0 = 90
m = Basemap(projection='npaeqd',\
            resolution='c',\
            boundinglat=0,lon_0=lon_0,round=True,)

m.drawcoastlines()
m.drawparallels(np.arange(30,90,15),labels=[0,0,0,0],latmax= 90,dashes=[4,4])
m.drawmeridians(np.arange(0,360,30),labels=[1,1,1,1],fontsize=16,dashes=[4,4])

ny = 361; nx =1440
lons, lats = m.makegrid(nx, ny) # get lat/lons of ny by nx evenly space grid.
x, y = m(lons, lats) # compute map proj coordinates.

# draw 
cs = m.contourf(x,y,w[360:721][:],cmap='seismic')#, vmin=-0.3, vmax=0.3)
#cs = m.pcolormesh(x,y,w[360:721][:],cmap='seismic')#, vmin=-0.3, vmax=0.3)
# add colorbar.

cbar = m.colorbar(cs, location='right',pad="5%")

我进行了很多搜索,但是我不知道问题是什么,或者使用等距圆柱投影可以在地图上的正确位置存储数据。

预先感谢

0 个答案:

没有答案