Другой результат, когда я устанавливаю `vmin` и `vmax` с другим типом графика

Задний план

Для построения двухмерного пространственного распределения некоторого атрибута contourf и pcolormesh являются хорошим выбором в качестве формы визуализации.

Из-за фактического значения графических данных я хочу установить значение рядом с нулем, отображаемое белым цветом (например, [-0,2,0,2]); а нулевое значение должно быть средней точкой

Из вопроса [Определение средней точки карты цветов в matplotlib, я попытался установить vmin и vmax для настройки карты цветов.

Импорт данных

import pygrib
grib='fnl_20141110pcolormesh00.grib2';
grbs=pygrib.open(grib)
grb = grbs.select(name='Vertical velocity')[8]#Vertical velocity
data=grb.values
lat,lon = grb.latlons()

1. Контурный сюжет

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)

введите здесь описание изображения

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)

введите здесь описание изображения

Я загружаю данные сюда в виде файла .grib2. Если интересно, можете скачать

мое сомнение

  1. С типом графика contour установка симметричных vmin и vmax не могла настроить ноль на среднюю точку палитры. Это отличается от pcolormesh.

  2. Одна и та же цветовая карта RdBu_r ==> дает разные результаты в contourf и pcolormesh. На графике pcolormesh средняя часть цветной полосы показана white color. Но на графике contourf белый цвет как будто игнорировался.


person Han Zhengzu    schedule 07.06.2016    source источник