Использование азимутального типа картографической проекции всегда требует набора правильных параметров для получения хорошего результата. В этом случае стереографическая проекция с центром на северном полюсе, ее правильные параметры не те, которые вы обычно используете при реализации с часто используемой проекцией PlateCaree
. Вот рабочий код, который вы можете попробовать.
# Stereographic projection coverage
# should be specified less than half of a hemisphere
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
import numpy as np
m = Basemap(projection='stere', resolution='c',
lat_0=90, lon_0=270, lat_ts=(90.+35.)/2., width=15000000, height=10000000)
# (width, height) is the plot extents in meters
m.drawmeridians(np.arange(0, 360, 30), labels=[1,1,1,0])
m.drawparallels(np.arange(0, 90, 10), labels=[0,0,0,1])
m.drawcoastlines()
m.shadedrelief()
plt.show()
Получившийся график (карта 1):
![введите здесь описание изображения](https://i.stack.imgur.com/VMAGq.png)
Поместить другую часть мира в область построения можно путем центрирования карты.
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
import numpy as np
# projection center point
lon0 = 180
lat0 = 60
m = Basemap(projection='stere', resolution='c',
lat_0=lat0, lon_0=lon0, lat_ts=lat0, width=15000000, height=10000000)
m.drawmeridians(np.arange(0, 360, 30), labels=[1,0,0,1]) # left, right, top, bottom
m.drawparallels(np.arange(0, 90, 10), labels=[0,1,1,0])
m.drawcoastlines()
m.shadedrelief()
plt.show()
Выходной график (карта 2):
![введите здесь описание изображения](https://i.stack.imgur.com/Rfb8R.png)
Указав правильные значения llcrnrlon
, urcrnrlon
, llcrnrlat
, urcrnrlat
, в Basemap()
можно получить требуемые экстенты карты. Вот еще один пример сюжета по запросу ОП.
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure(figsize=(8,8))
m = Basemap(projection='stere', resolution='c',
lat_0=90, lon_0=-90, lat_ts=(90.+35.)/2.,
llcrnrlon=-142, urcrnrlon=78, llcrnrlat=19, urcrnrlat=45)
m.drawmeridians(np.arange(0, 360, 30), labels=[1,0,1,0]) # left, right, top, bottom
m.drawparallels(np.arange(0, 90, 10), labels=[0,1,0,1])
m.drawcoastlines()
m.shadedrelief()
plt.show()
Получившийся график (карта 3):
а>
person
swatchai
schedule
05.03.2019