The different result when I set `vmin` and `vmax` with different plot type
<h3>Background</h3>

<p>For plotting 2-d spatial distribution of some attribute, <code>contourf</code> and <code>pcolormesh</code> are both good choice as a visualization form.  </p>

<p>Due to the actual meaning of the plotting data, I want to <strong>set the value nearby zero are showing in white color(for example, [-0.2,0.2]); and zero value should be the midpoint</strong>  </p>

<p>From the question [<a href="https://stackoverflow.com/questions/7404116/defining-the-midpoint-of-a-colormap-in-matplotlib?answertab=votes#tab-top]">Defining the midpoint of a colormap in matplotlib</a>, I tried to set <code>vmin</code> and <code>vmax</code> to adjust the colormap.  </p>

<h3>Data import</h3>

<pre><code>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()
</code></pre>

<h3>1. Contourf plot</h3>

<pre><code>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 &amp; vmax",fontsize = 15)
</code></pre>

<p><a href="https://i.stack.imgur.com/KjQkv.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/KjQkv.png" alt="enter image description here"></a></p>

<h3>2. Pcolormesh plot</h3>

<pre><code>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 &amp; vmax",fontsize = 15)
</code></pre>

<p><a href="https://i.stack.imgur.com/CONaz.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/CONaz.png" alt="enter image description here"></a></p>

<p>I upload the data <a href="https://drive.google.com/open?id=0B7FE0kxAL8kQSHRoSkZXT09ZM0k" rel="nofollow noreferrer">here</a> as an .grib2 file. If you are interested, you can download it</p>

<h3>My doubt</h3>

<ol>
<li><p>With the <strong>contourf</strong> plot type, setting symmetrical <code>vmin</code> and <code>vmax</code> couldn't adjust zeron to the midpoint of the colormap. That's different from <strong>pcolormesh</strong>.    </p></li>
<li><p>The same colormap <code>RdBu_r</code> ==> different result in <code>contourf</code> and <code>pcolormesh</code>. In <code>pcolormesh</code> plot, the middle partof colorbar are shown in <code>white color</code>. But in <code>contourf</code> plot, the white color seemed to be ignored. </p></li>
</ol>