当我用不同的绘图类型设置`vmin`和`vmax`时的结果不同

时间:2016-06-07 01:23:54

标签: python matplotlib matplotlib-basemap colormap grib

背景

为了绘制某些属性的二维空间分布,contourfpcolormesh都是可视化形式的不错选择。

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

问题[Defining the midpoint of a colormap in matplotlib,我尝试设置vminvmax来调整色彩映射。

数据导入

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()

1。 Contourf plot

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)

enter image description here

2。 Pcolormesh情节

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)

enter image description here

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

我怀疑

  1. 使用 contourf 绘图类型,设置对称vminvmax无法将zeron调整为色彩映射的中点。这与 pcolormesh 有所不同。

  2. 相同的色彩图RdBu_r ==> contourfpcolormesh中的结果不同。在pcolormesh图中,颜色的中间部分显示在white color中。但在contourf情节中,白色似乎被忽略了。

0 个答案:

没有答案