В настоящее время я пытаюсь создать 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()