Python 使用不同的打印类型设置“vmin”和“vmax”时的不同结果 背景

Python 使用不同的打印类型设置“vmin”和“vmax”时的不同结果 背景,python,matplotlib,matplotlib-basemap,colormap,grib,Python,Matplotlib,Matplotlib Basemap,Colormap,Grib,对于绘制某些属性的二维空间分布,tourtf和pcolormesh都是很好的可视化形式选择 由于绘图数据的实际意义,我想设置以白色显示的零附近的值(例如,[-0.2,0.2]);零值应该是中点 从问题[,我试图设置vmin和vmax来调整颜色映射 数据导入 1.等值线图 2.Pcolormesh图 我将数据上传为.grib2文件。如果您感兴趣,可以下载它 我的怀疑 使用contourf绘图类型,设置对称vmin和vmax无法将zeron调整到彩色贴图的中点。这与pcolormesh不同 相同

对于绘制某些属性的二维空间分布,
tourtf
pcolormesh
都是很好的可视化形式选择

由于绘图数据的实际意义,我想设置以白色显示的零附近的值(例如,[-0.2,0.2]);零值应该是中点

从问题[,我试图设置
vmin
vmax
来调整颜色映射

数据导入 1.等值线图

2.Pcolormesh图

我将数据上传为.grib2文件。如果您感兴趣,可以下载它

我的怀疑
  • 使用contourf绘图类型,设置对称
    vmin
    vmax
    无法将zeron调整到彩色贴图的中点。这与pcolormesh不同

  • 相同的颜色映射
    RdBu_r
    ==>在
    tourf
    pcolormesh
    绘图中不同的结果。在
    pcolormesh
    绘图中,颜色条的中间部分显示为
    white color
    。但在
    tourf
    绘图中,白色似乎被忽略

  • import pygrib
    grib='fnl_20141110_12_00.grib2';
    grbs=pygrib.open(grib)
    grb = grbs.select(name='Vertical velocity')[8]#Vertical velocity
    data=grb.values
    lat,lon = grb.latlons()
    
    m = Basemap(llcrnrlon=110,llcrnrlat=34,urcrnrlon=122,urcrnrlat=44,projection='mill')
    fig=plt.figure(figsize=(8,4))
    ax1 = plt.subplot(121)
    x, y = m(lon, lat)
    cs = m.contourf(x,y,data,cmap=plt.cm.RdBu)
    
    cb = m.colorbar(cs,"bottom", size="5%", pad="8%")
    ax1.set_title("Original",fontsize = 15)
    
    ax2 = plt.subplot(122)
    cs = m.contourf(x,y,data,cmap=plt.cm.RdBu,vmin = -1.8,vmax =1.8)
    cb = m.colorbar(cs,"bottom", size="5%", pad="8%")
    ax2.set_title("symmetrical vmin & vmax",fontsize = 15)
    
    m = Basemap(llcrnrlon=110,llcrnrlat=34,urcrnrlon=122,urcrnrlat=44,projection='mill')
    fig=plt.figure(figsize=(8,4))
    ax1 = plt.subplot(121)
    cs = m.pcolormesh(x,y,data,cmap=plt.cm.RdBu)
    cb = m.colorbar(cs,"bottom", size="5%", pad="8%")
    ax1.set_title("Original",fontsize = 15)
    
    ax2 = plt.subplot(122)
    cs = m.pcolormesh(x,y,data,cmap=plt.cm.RdBu,vmin = -1.8,vmax =1.8)
    cb = m.colorbar(cs,"bottom", size="5%", pad="8%")
    ax2.set_title("symmetrical vmin & vmax",fontsize = 15)