Я могу заставить cartopy рисовать разумные полярные проекции всей небесной сферы с центром на любом полюсе, но если я попытаюсь ограничить диапазон широты, азимутально-эквидистантный график схлопнется до вертикальной линии (!), а стереографическая проекция станет квадратной, вот так:

- Вверху слева: проекция азека всей небесной сферы с центром на северном полюсе.
- Вверху справа: стереопроекция всей небесной сферы с центром на южном полюсе.
- Внизу слева: проекция азека от 70° с.ш. к северу полюс.
- Внизу справа: стереопроекция от 70°ю.ш. до южного полюса.
Код, который у меня есть сейчас:
from cartopy import crs
from math import pi as PI
import matplotlib.pyplot as plt
from matplotlib.gridspec import GridSpec
CEL_SPHERE = crs.Globe(
ellipse=None,
semimajor_axis=180/PI,
semiminor_axis=180/PI,
)
PC_GALACTIC = crs.PlateCarree(globe=CEL_SPHERE)
def render_map(path, width, height):
fig = plt.figure(layout="constrained", figsize=(width, height))
try:
gs = GridSpec(2, 2, figure=fig)
axN1 = fig.add_subplot(
gs[0, 0],
projection=crs.AzimuthalEquidistant(
central_latitude=90,
globe=CEL_SPHERE,
)
)
axN1.gridlines(draw_labels=True)
axS2 = fig.add_subplot(
gs[0, 1],
projection=crs.SouthPolarStereo(globe=CEL_SPHERE)
)
axS2.gridlines(draw_labels=True)
axN2 = fig.add_subplot(
gs[1, 0],
projection=crs.AzimuthalEquidistant(
central_latitude=90,
globe=CEL_SPHERE,
)
)
axN2.set_extent((-180, 180, 70, 90), crs=PC_GALACTIC)
axN2.gridlines(draw_labels=True)
axS2 = fig.add_subplot(
gs[1, 1],
projection=crs.SouthPolarStereo(globe=CEL_SPHERE)
)
axS2.set_extent((-180, 180, -90, -70), crs=PC_GALACTIC)
axS2.gridlines(draw_labels=True)
fig.savefig(path)
finally:
plt.close(fig)
if __name__ == "__main__":
render_map("map_test.pdf", 12, 12)
Подробнее здесь: https://stackoverflow.com/questions/797 ... ar-regions