Проблемы при построении точек для определенных проекций карты в базовой карте Matplotlib (Python) - PullRequest
0 голосов
/ 31 марта 2020

Я пытаюсь построить некоторые точки, используя scatter на Python базовой карте.

Я понял, что когда я устанавливаю lon_0 из Basemap в значение, отличное от 0, некоторые из точек, которые я пытаюсь построить с помощью scatter, не отображаются, но только для определенных проекций карты, пока я не имеют этой проблемы для других. Как правило, это те, которые переключаются слева направо или справа налево от центра при установке lon_O на значение, отличное от 0.

Вы можете точно понять, что я имею в виду, используя этот код :

# ------------------------------------------ #
# ---------- Some initial settings --------- #
# ------------------------------------------ #

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

px=np.arange(-179.5,180.5,1)
py=np.zeros(np.size(px))

# ------------------------------------------ #
# --------- End of initial settings -------- #
# ------------------------------------------ #

fig, axs = plt.subplots(2,2,figsize=(10,5))

m = Basemap(projection='eck4',lon_0=0,resolution='c',ax=axs[0,0])
m.drawcoastlines()
m.fillcontinents(color='white')
xx, yy = m(px,py)
m.scatter(xx,yy,s=1.5,marker='o',c='green',zorder=3)
axs[0,0].set_title('Eckert IV projection',fontsize=15)
axs[0,0].set_ylabel("Center 0°",labelpad=20,fontsize=15)

m = Basemap(projection='cyl',lon_0=0,resolution='c',ax=axs[0,1])
m.drawcoastlines()
m.fillcontinents(color='white')
xx, yy = m(px,py)
m.scatter(xx,yy,s=1.5,marker='o',c='green',zorder=3)
axs[0,1].set_title('Equidistant Cylindrical projection',fontsize=15)

m = Basemap(projection='eck4',lon_0=-90,resolution='c',ax=axs[1,0])
m.drawcoastlines()
m.fillcontinents(color='white')
xx, yy = m(px,py)
m.scatter(xx,yy,s=1.5,marker='o',c='green',zorder=3)
axs[1,0].set_ylabel("Center 90°W",labelpad=20,fontsize=15)

m = Basemap(projection='cyl',lon_0=-90,resolution='c',ax=axs[1,1])
m.drawcoastlines()
m.fillcontinents(color='white')
xx, yy = m(px,py)
m.scatter(xx,yy,s=1.5,marker='o',c='green',zorder=3)

plt.show()

Вывод:

enter image description here

Я пытаюсь найти способ нанести на карту недостающие зеленые точки на нижний правый рисунок.

Спасибо за сотрудничество,

SM

...