2017-05-05 313 views
1

我想用立体投影绘制我的数据。然而,当我尝试绘制时,除了大​​陆之外没有任何东西被绘制出来。Python - 用pcolormesh和底图绘制

要解释一下,这是我的数据图的数字为:

plt.pcolormesh(longrid_t, latgrid_t,totvart_t) 

其中longrid_t是经度,latgrid_t是纬度和totvart_t是,我想绘制的数据。

这里是图中绘出仅与pcolormesh(无底图)为plt.pcolormesh(longrid_t, latgrid_t,totvart_t)

Figure plotted only with pcolormesh (without basemap : plt.pcolormesh(longrid_t, latgrid_t,totvart_t)

现在,我试图用一个立体投影绘制这些数据:

map = Basemap(width=10000000,height=6000000, resolution='l',projection='stere', 
     lat_0=40.,lon_0=-40.) 
map.fillcontinents(color='darkgrey',lake_color='darkgrey') 
map.drawcoastlines() 
map.drawparallels(arange(-90, 91., 10.), labels=[1, 0, 0, 1], 
       dashes=[1, 1], linewidth=0.25, color='0.5') 
map.drawmeridians(arange(-180., 181., 10.), labels=[1, 0, 0, 1], 
       dashes=[1, 1], linewidth=0.25, color='0.5') 

map.pcolormesh(longrid_t, latgrid_t, totvart_t, cmap='jet') 
map.colorbar() 

然而,这个立体投影的结果并不是我所期望的:

stereographic projection

我也尝试过与其他预测。并且还使用pcolor和contourf代替pcolormesh。但它给了我相同的结果。

你有什么想法吗?

+0

您是否在调用'map.pcolormesh'函数时使用'latlon = True' kwarg? – farenorth

回答

1

你必须转换你的坐标数据投影xy坐标,然后与转换的坐标绘制:

map = Basemap(width=10000000,height=6000000, resolution='l',projection='stere', 
     lat_0=40.,lon_0=-40.) 
map.fillcontinents(color='darkgrey',lake_color='darkgrey') 
map.drawcoastlines() 
map.drawparallels(arange(-90, 91., 10.), labels=[1, 0, 0, 1], 
       dashes=[1, 1], linewidth=0.25, color='0.5') 
map.drawmeridians(arange(-180., 181., 10.), labels=[1, 0, 0, 1], 
       dashes=[1, 1], linewidth=0.25, color='0.5') 
# convert lat-lon to projection coordinate system 
xpt,ypt = m(longrid_t, latgrid_t) # convert to projection map 

map.pcolormesh(xpt, ypt, totvart_t, cmap='jet') 
map.colorbar() 
0

非常感谢您! 它只是在ymy调用map.pcolormesh时添加latlon = True kwarg