您可能缺少解释经纬度数据的关键字。来自 Basemap.scatter 的帮助:
如果 latlon 关键字设置为 True,x,y 将被解释为经度
和以度为单位的纬度。数据和经度是自动的
移动以匹配圆柱形的地图投影区域和
伪圆柱投影,并将 x,y 转换为映射
投影坐标。如果latlon 为 False(默认),则 x 和 y 为
假定为地图投影坐标。
我还需要增加 z 顺序以分散在大陆和海洋的顶部。
import time, calendar, datetime, numpy
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
# draw map with markers for float locations
m = Basemap(projection='hammer',lon_0=180)
m.drawmapboundary(fill_color='#99ffff')
m.fillcontinents(color='#cc9966',lake_color='#99ffff')
m.scatter([-73.98, 238., 0.08, 0., 116.38],[40.78,47.6, 51.53,0., 39.91],
latlon=True, # Ta-da!
marker='o',color='k',
zorder=10)
plt.title('Hammer projection, data on top',fontsize=12)
plt.show()