我想用立体投影来绘制数据。但是,当我尝试绘图时,除了各大洲以外,什么也没画。
解释一下,这是我的数据图:
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。但这给了我相同的结果。
你有想法吗?
最佳答案
您必须将坐标数据转换为投影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()