Проекция Matplotlib Mollweide/Hammer: только интересующая область

Мне было интересно, есть ли способ показать интересующую область только на графике, основанном на проекции Моллвейде/Хаммера в базовой карте (matplotlib).

Я пытаюсь установить границы сюжета примерно на Тихоокеанскую плиту, как в ссылке ниже. Однако функции set_xlim и set_ylim, похоже, не имеют никакого эффекта. Заранее спасибо за любое руководство.

http://geology.gsapubs.org/content/29/8/695/F1.large.jpg


person semper    schedule 02.07.2015    source источник
comment
Проекции Hammer и Mollweide этого не позволяют, так как они распечатывают карты мира целиком. Однако проекция Polyconic может сделать это, но границы представляют собой прямые линии (проекция применяется, но использует прямоугольник для границ изображения).   -  person NullDev    schedule 02.07.2015


Ответы (1)


Судя по документации, проекции Hammer и Mollweide не позволяют этого, поскольку они распечатывают карты мира целиком. Вот некоторый код, использующий проекцию Polyconic, но он ограничен прямыми линиями. Хитрость здесь заключается в том, чтобы определить угловую долготу и широту при создании.

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

my_map = Basemap(projection='poly', lat_0=0, lon_0=-160,
    resolution = 'h', area_thresh = 0.1,
    llcrnrlon=140, llcrnrlat=-60,
    urcrnrlon=-100, urcrnrlat=60)

plt.figure(figsize=(16,12))

my_map.drawcoastlines()
my_map.drawcountries()
my_map.fillcontinents(color='coral', lake_color='aqua')
my_map.drawmapboundary(fill_color='aqua')

my_map.drawmeridians(np.arange(0, 360, 20))
my_map.drawparallels(np.arange(-90, 90, 10))

plt.show()

Результат:

введите здесь описание изображения

Обратите внимание, что это фактически показывает меньшую площадь, чем та, что на картинке, которую вы предоставили.

person NullDev    schedule 02.07.2015
comment
Большое спасибо, что нашли время, чтобы собрать этот пример. Я просто жду, чтобы увидеть, может ли кто-нибудь еще внести свой вклад, прежде чем я приму это как ответ. - person semper; 03.07.2015