Вращение графика карты с использованием базовой карты в python

Я пытаюсь построить данные из netcdf, используя Basemap, но я думаю, что, поскольку индексы широты инвертированы, я получаю карту, которая перевернута. Как мне это исправить? Спасибо!

fnc = Dataset(ncfile, 'r')
lat = fnc.variables['latitude'][:]
lon = fnc.variables['longitude'][:]
level = fnc.variables['level']
mydata = fnc.variables['Data'][:]
imgplot = plt.imshow(mydata[0, 0, :, :])
imgplot.set_cmap('RdYlGn')
plt.colorbar()
plt.show

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

m = Basemap(llcrnrlon = -180, llcrnrlat = -90, urcrnrlon = 180, urcrnrlat= +90, resolution = 'l', epsg=4326)
x, y = m(lon, lat)
im = m.imshow(mydata[0, 0, :, :])
m.drawcoastlines()
plt.show()

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


person user26750    schedule 12.07.2016    source источник


Ответы (2)


Во-первых, обратите внимание, что в настоящее время вы читаете в одном измерении Data:

mydata = fnc.variables['Data'][:]

но позже вы пытаетесь извлечь его фрагменты, как если бы это было 4D:

imgplot = plt.imshow(mydata[0, 0, :, :])

Итак, вы захотите прочитать все 4 измерения Data (возможно, это время, уровень, широта, долгота?):

mydata = fnc.variables['Data'][:,:,:,:]

а затем изменить широту, используя синтаксис ::-1:

imgplot.plotimshow(mydata[0, 0, ::-1, :])
person N1B4    schedule 12.07.2016
comment
Спасибо за быстрый ответ. У меня также есть дополнительный вопрос, и я был бы признателен, если бы вы могли помочь мне и в этом stackoverflow.com/questions/38338177/ - person user26750; 12.07.2016

Я считаю, что команда построения графика должна знать координаты карты x, y. Попробуйте заменить

im = m.imshow(mydata[0, 0, :, :])

с

m.pcolormesh(x,y,mydata[0,0,:,:])

и это должно работать.

person kakk11    schedule 12.07.2016