базовая карта отображает только интересующую область, а не весь земной шар

Мне нужно использовать проекцию Моллвейда, но отображать только интересующую область. (например, широта=[10,90], долгота=[-25, 45]). Базовый код ниже.

Кажется, это невозможно с некоторыми проекциями в Basemap (http://matplotlib.org/basemap/api/basemap_api.html#mpl_toolkits.basemap.Basemap).

Возможно, окончательный сюжет можно замаскировать полигонами. Но, может быть, есть более чистый способ?

from mpl_toolkits.basemap import Basemap
import numpy as np
import matplotlib.pyplot as plt

m = Basemap(projection='moll',lon_0=0, lat_0=0,
        llcrnrlon = -25.0, llcrnrlat = 10.0,
        urcrnrlon = 45.0, urcrnrlat = 90.0)

# draw parallels and meridians.
m.drawparallels(np.arange(10.0, 91.0, 5.))
m.drawmeridians(np.arange(-25.0, 46.0, 5.))

m.drawmapboundary(fill_color='white')
plt.show()

person 3150    schedule 22.08.2013    source источник


Ответы (2)


Вы можете захватить оси и установить ограничение с помощью простого matplotlib:

ax = plt.gca()

ax.set_xlim(-25,45)
ax.set_ylim(10,90)
person Rutger Kassies    schedule 22.08.2013
comment
Я пробовал ваш код в разных местах, но параллели + меридианы по-прежнему находятся за пределами интересующей области. И контур земного шара по-прежнему рисуется. Может я что-то упускаю? - person 3150; 23.08.2013

Я считаю, что вы правы, и что начиная с версии 1.0.7 проекции, указанные как «глобальные» в документация не предлагает дополнительных настроек.

person chryss    schedule 09.09.2013