Проекции Cartopy Non-PlateCarree приводят к пустому графикуPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Проекции Cartopy Non-PlateCarree приводят к пустому графику

Сообщение Anonymous »

Я пытаюсь нанести некоторые климатические данные на карту части Скандинавии. Использование PlateCarree() в качестве ключевых слов трансформации и проекции работает, но в этой проекции карта перекошена:

Код: Выделить всё

dataset_LU = Dataset('data.nc', 'r')
LU = dataset_LU.variables['LU_INDEX'][0,:,:]

lats = dataset_LU.variables['XLAT_M'][0,:,:]
lons = dataset_LU.variables['XLONG_M'][0,:,:]

bbox = [2.5,20,57, 71.5]
projection = crs.PlateCarree()
transform = crs.PlateCarree()
nrows = 1
ncolumns = 1
vmin = 0
vmax = 24
levels = np.linspace(vmin, vmax, 24+1)

fig, axs = plt.subplots(nrows = nrows, ncols = ncolumns,
subplot_kw = {'projection': projection},
figsize = (11,8.5))

cmap2 = matplotlib.colors.LinearSegmentedColormap.from_list("my_colormap", ('#00ffdd', '#acb20c', '#e8a202', '#ffff00', '#ff0000',
'#ff7b59', '#ffb29f', '#bf0041', '#e16173', '#784b04',
'#0e6b1d', '#00b737', '#09ff00', '#81d41a', '#afd095',
'#16a69a', '#55215b', '#6c2dcc', '#8e86ae', '#000000',
'#333333', '#666666', '#999999', '#eeeeee'),
N=24, gamma=1.0)

cs = axs.contourf(lons, lats, LU, 60, transform=transform, levels=levels, cmap=cmap2, extend='both')
axs.coastlines()
axs.add_feature(feature.OCEAN, zorder=100, edgecolor='k')
axs.set_extent(bbox, projection)
cbar = fig.colorbar(cs, ax=axs, orientation='vertical')
cbar.set_label('Land-use')

fig.subplots_adjust(bottom=0.05, top=0.95, left=0.01, right=0.99, wspace=0.02, hspace=0.2)

plt.show()
Изображение

При использовании Mercator() в качестве преобразования и проекции карта отображается, но без черных линий, с неправильным цветом океана и все еще в перекошенной проекции:

Код: Выделить всё

dataset_LU = Dataset('data.nc', 'r')
LU = dataset_LU.variables['LU_INDEX'][0,:,:]

lats = dataset_LU.variables['XLAT_M'][0,:,:]
lons = dataset_LU.variables['XLONG_M'][0,:,:]

bbox = [2.5,20,57, 71.5]
projection = crs.Mercator()
transform = crs.Mercator()
nrows = 1
ncolumns = 1
vmin = 0
vmax = 24
levels = np.linspace(vmin, vmax, 24+1)

fig, axs = plt.subplots(nrows = nrows, ncols = ncolumns,
subplot_kw = {'projection': projection},
figsize = (11,8.5))

cmap2 = matplotlib.colors.LinearSegmentedColormap.from_list("my_colormap", ('#00ffdd', '#acb20c', '#e8a202', '#ffff00', '#ff0000',
'#ff7b59', '#ffb29f', '#bf0041', '#e16173', '#784b04',
'#0e6b1d', '#00b737', '#09ff00', '#81d41a', '#afd095',
'#16a69a', '#55215b', '#6c2dcc', '#8e86ae', '#000000',
'#333333', '#666666', '#999999', '#eeeeee'),
N=24, gamma=1.0)

cs = axs.contourf(lons, lats, LU, 60, transform=transform, levels=levels, cmap=cmap2, extend='both')
axs.coastlines()
axs.add_feature(feature.OCEAN, zorder=100, edgecolor='k')
axs.set_extent(bbox, projection)
cbar = fig.colorbar(cs, ax=axs, orientation='vertical')
cbar.set_label('Land-use')

fig.subplots_adjust(bottom=0.05, top=0.95, left=0.01, right=0.99, wspace=0.02, hspace=0.2)

plt.show()
Изображение

При использовании Mercator() в качестве проекции и PlateCarree() в качестве преобразования код занимает много времени, а затем отображает пустой график:

Код: Выделить всё

dataset_LU = Dataset('data.nc', 'r')
LU = dataset_LU.variables['LU_INDEX'][0,:,:]

lats = dataset_LU.variables['XLAT_M'][0,:,:]
lons = dataset_LU.variables['XLONG_M'][0,:,:]

bbox = [2.5,20,57, 71.5]
projection = crs.Mercator()
transform = crs.PlateCarree()
nrows = 1
ncolumns = 1
vmin = 0
vmax = 24
levels = np.linspace(vmin, vmax, 24+1)

fig, axs = plt.subplots(nrows = nrows, ncols = ncolumns,
subplot_kw = {'projection':  projection},
figsize = (11,8.5))

cmap2 = matplotlib.colors.LinearSegmentedColormap.from_list("my_colormap", ('#00ffdd', '#acb20c', '#e8a202', '#ffff00', '#ff0000',
'#ff7b59', '#ffb29f', '#bf0041', '#e16173', '#784b04',
'#0e6b1d', '#00b737', '#09ff00', '#81d41a', '#afd095',
'#16a69a', '#55215b', '#6c2dcc', '#8e86ae', '#000000',
'#333333', '#666666', '#999999', '#eeeeee'),
N=24, gamma=1.0)

cs = axs.contourf(lons, lats, LU, 60, transform=transform, levels=levels, cmap=cmap2, extend='both')
axs.coastlines()
axs.add_feature(feature.OCEAN, zorder=100, edgecolor='k')
axs.set_extent(bbox, projection)
cbar = fig.colorbar(cs, ax=axs, orientation='vertical')
cbar.set_label('Land-use')

fig.subplots_adjust(bottom=0.05, top=0.95, left=0.01, right=0.99, wspace=0.02, hspace=0.2)

plt.show()
Изображение

Что я здесь не понимаю? Как мне решить эту проблему и отобразить свои данные в проекции Меркатора (или любой другой проекции, отличной от PlateCarree)?


Подробнее здесь: https://stackoverflow.com/questions/786 ... empty-plot
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Проекции Cartopy, не относящиеся к PlateCarree, приводят к пустому графику
    Anonymous » » в форуме Python
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Шов, где долгота оборачивается в проекции matplotlib/cartopy Mollweide
    Anonymous » » в форуме Python
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Как заставить круг деформироваться по проекции в cartopy
    Anonymous » » в форуме Python
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Шов, где долгота оборачивается в проекции matplotlib/cartopy Mollweide
    Anonymous » » в форуме Python
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • Постройте панды, сгруппированные по коробчатому графику и графику данных на одном рисунке
    Anonymous » » в форуме Python
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»