Я пытаюсь построить некоторые данные grib, используя basemap и imshow вместо contourf. Когда я рисую его с помощью contourf, я получаю правильные границы и цвета, но когда я делаю это с помощью imshow, возникает несоответствие между изображением и картой. Постройте с контуром используя contourf. Постройте с помощью imshow используя imwshow
Я использую проекцию lcc. В документации я вижу несколько примеров с использованием цилиндрической проекции, но я также вижу несоответствие в этом случае. Соответствующий код ниже.
m = Basemap(llcrnrlon=-55, llcrnrlat=55.8, urcrnrlon=80, urcrnrlat=80, lat_1=72, lat_0=72., lon_0=-36, resolution='h', projection='lcc')
x, y = m(lons, lats)
data = data - 273.15
import matplotlib as mpl
cmap = mpl.cm.RdBu_r
norm = mpl.colors.Normalize(vmin=-55, vmax=15)
minVal = min(data.flatten())
maxVal = max(data.flatten())
clev = np.arange(minVal,maxVal,0.01)
#using contourf
CS_tmp = m.contourf(x,y,data,clev,cmap=plt.cm.coolwarm)
#using imshow
CS_tmp = m.imshow(data2,cmap=cmap) #,extent=extent)
У меня вопрос: какое преобразование следует применить к данным? Я пытался следовать этому руководству https://basemaptutorial.readthedocs.io/en/latest/utilities.html#interp, который ссылается на transform_scalar, который работает только для цилиндрических проекций.
Предлагается использовать интерполяцию для проекции без цилиндра. обычный. Смотрите промежуточный пример для решения.
Я пробовал следовать приведенному здесь примеру, но это не сработало, и я все еще вижу несоответствие
x2 = np.linspace(x[0][0],x[0][-1],x.shape[1]*2)
y2 = np.linspace(y[0][0],y[-1][0],y.shape[0]*2)
x2, y2 = np.meshgrid(x2, y2)
data_trans = interp(data, x[0], y[:, 0], x2, y2,order=1)
Может ли кто-нибудь сказать мне, какая бы здесь адекватная трансформация?
Спасибо за любую помощь
Карлос
data
иdata2
, как они связаны? Если вы сможете опубликовать исполняемый код, вам будет легче найти проблему. - person swatchai   schedule 22.09.2020