问题描述
我正在尝试使用底图绘制一些grib数据 和imshow而不是contourf。当用contourf绘制时,我得到了适当的边界和颜色,但是当用imshow绘制时,图像和地图之间却不匹配。 使用contourf using contourf进行绘图。使用imshow using imwshow
进行绘图我正在使用lcc投影。在文档中,我看到了一些使用圆柱投影的示例,但是在这种情况下,我也会出现不匹配的情况。 相关代码如下。
m = Basemap(llcrnrlon=-55,llcrnrlat=55.8,urcrnrlon=80,urcrnrlat=80,lat_1=72,lat_0=72.,lon_0=-36,resolution='h',projection='lcc')
x,y = m(lons,lats)
data = data - 273.15
import matplotlib as mpl
cmap = mpl.cm.RdBu_r
norm = mpl.colors.Normalize(vmin=-55,vmax=15)
minVal = min(data.flatten())
maxVal = max(data.flatten())
clev = np.arange(minVal,maxVal,0.01)
#using contourf
CS_tmp = m.contourf(x,y,data,clev,cmap=plt.cm.coolwarm)
#using imshow
CS_tmp = m.imshow(data2,cmap=cmap) #,extent=extent)
我的问题是,我应该应用哪种转换 数据?我试图按照本教程 https://basemaptutorial.readthedocs.io/en/latest/utilities.html#interp 它引用了transform_scalar,这只会起作用 用于圆柱投影。
建议对非圆柱投影使用interp “当输入矩阵的经纬度不规则(即不是圆柱投影)时,由于经纬度网格不规则,因此无法正确使用此方法。有关解决方案,请参见插值示例。 “
我尝试按照那里的示例进行操作,但这没有用 而且我仍然看到不匹配
x2 = np.linspace(x[0][0],x[0][-1],x.shape[1]*2)
y2 = np.linspace(y[0][0],y[-1][0],y.shape[0]*2)
x2,y2 = np.meshgrid(x2,y2)
data_trans = interp(data,x[0],y[:,0],x2,y2,order=1)
谁能告诉我这里适当的转变是什么?
感谢您的帮助
卡洛斯
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)