Только верхняя половина Mollweide-Projection с использованием базовой карты Matplotlib

В настоящее время я пытаюсь создать pcolormesh-график данных, который определен только для верхней половины сферы, поэтому азимутальный угол охватывает полные 2 пи, но полярный угол равен 0 < theta < pi/2.

Желаемым результатом будет график с использованием проекции Моллвейда, но без отображения нижней половины. Без базовой карты я попытался изменить пределы оси с помощью ax.set_ylim(lims), что привело к ошибке, которая сообщила мне, что эта функция отключена при использовании проекций, и предложила вместо этого использовать базовую карту.

Я предпринял несколько попыток изменить пределы, используя, например. llcrnrlon и т. д., но это имеет смысл только для участков, ограниченных прямоугольной рамкой. В этом ответе предлагается использовать поликоническую проекцию, но я не смог достичь желаемого результата.

Если у кого-то есть идея, как это можно сделать, дайте мне знать. Спасибо!

РЕДАКТИРОВАТЬ: Это пример кода:

import numpy as np
import matplotlib
import matplotlib.pyplot as plt

from mpl_toolkits.basemap import Basemap

lims_phi = [-np.pi., np.pi]
lims_the = [0., np.pi/2.]

phi = np.linspace(lims_phi[0], lims_phi[1], 10)
the = np.linspace(lims_the[0], lims_the[1], 10)

THE, PHI = np.meshgrid(np.rad2deg(the), np.rad2deg(phi))

Z = np.cos(np.deg2rad(THE))

fig = plt.figure(figsize=(10, 8))
ax = plt.subplot(111)

lat_bounds = 0., np.rad2deg(np.pi/2)
long_bounds = 0., np.rad2deg(np.pi)
m = Basemap(projection='moll', lon_0=0, ax=ax)
m.drawparallels(np.arange(0.,90.,30.))
m.drawmeridians(np.arange(-180.,180.,60.))

im = m.pcolormesh(PHI, THE, Z, cmap='Reds', latlon=True)

plt.show()

person ncim    schedule 04.12.2016    source источник
comment
Поделитесь кодом, пожалуйста   -  person eyllanesc    schedule 04.12.2016
comment
Спасибо, я обновил свой вопрос. Данные в примере довольно случайны. Я просто хочу не рисовать нижнюю половину проекции.   -  person ncim    schedule 04.12.2016