我想用立体投影绘制我的数据。然而,当我试图绘制时,除了大陆之外没有任何东西被绘制。
为了解释,这是我的数据图的数字:
plt.pcolormesh(longrid_t, latgrid_t,totvart_t)
其中longrid_t
是经度,latgrid_t
是纬度,totvart_t
是我想要绘制的数据。
以下是仅使用pcolormesh(没有底图)绘制的图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()
然而,这种立体投影的结果并非我的预期:
我也尝试过其他预测。还有pcolor和contourf而不是pcolormesh。但它给了我相同的结果。
你有什么想法吗?
答案 0 :(得分: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()
答案 1 :(得分:0)
非常感谢! 它可以简单地在ymy调用map.pcolormesh
中添加latlon = True kwarg