2

Я пытаюсь вылупить только те области, где у меня есть статистически значимые результаты. Как это сделать с помощью Basemap и pcolormesh?Область штриховки с использованием pcolormesh в Basemap

plt.figure(figsize=(12,12)) 

lons = iris_cube.coord('longitude').points 
lats = iris_cube.coord('latitude').points 

m = Basemap(llcrnrlon=lons[0], llcrnrlat=lats[0], urcrnrlon=lons[-1], urcrnrlat=lats[-1], resolution='l') 

lon, lat = np.meshgrid(lons, lats) 

plt.subplot(111) 

cs = m.pcolormesh(lon, lat, significant_data, cmap=cmap, norm=norm, hatch='/') 

ответ

0

кажется pcolormesh не поддерживает штриховки (см https://github.com/matplotlib/matplotlib/issues/3058). Вместо этого, совет использовать pcolor, который, начиная с this примера будет выглядеть,

import matplotlib.pyplot as plt 
import numpy as np 

dx, dy = 0.15, 0.05 
y, x = np.mgrid[slice(-3, 3 + dy, dy), 
       slice(-3, 3 + dx, dx)] 
z = (1 - x/2. + x ** 5 + y ** 3) * np.exp(-x ** 2 - y ** 2) 
z = z[:-1, :-1] 
zm = np.ma.masked_less(z, 0.3) 

cm = plt.pcolormesh(x, y, z) 
plt.pcolor(x, y, zm, hatch='/', alpha=0.) 
plt.colorbar(cm) 
plt.show() 

где массив маска используется для получения значения г больше, чем 0,3, и они вылупились использованием pcolor.

enter image description here

Чтобы избежать построения другого цвета поверх (так что вы получите только штриховки) я установил альфа 0. в pcolor, который чувствует себя немного как взломать. Альтернативой является использование патча и назначение в нужные вам области. См. Этот пример Python: Leave Numpy NaN values from matplotlib heatmap and its legend. Это может быть более сложным для basemaps и т. Д., Чем просто выбор областей с pcolor.

Смежные вопросы