Задний план
Для построения двухмерного пространственного распределения некоторого атрибута contourf
и pcolormesh
являются хорошим выбором в качестве формы визуализации.
Из-за фактического значения графических данных я хочу установить значение рядом с нулем, отображаемое белым цветом (например, [-0,2,0,2]); а нулевое значение должно быть средней точкой
Из вопроса [Определение средней точки карты цветов в matplotlib, я попытался установить vmin
и vmax
для настройки карты цветов.
Импорт данных
import pygrib
grib='fnl_20141110pcolormesh
00.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. Если интересно, можете скачать
мое сомнение
С типом графика contour установка симметричных
vmin
иvmax
не могла настроить ноль на среднюю точку палитры. Это отличается от pcolormesh.Одна и та же цветовая карта
RdBu_r
==> дает разные результаты вcontourf
иpcolormesh
. На графикеpcolormesh
средняя часть цветной полосы показанаwhite color
. Но на графикеcontourf
белый цвет как будто игнорировался.