Python 散点图数据在';锤子';底图

Python 散点图数据在';锤子';底图,python,matplotlib,scatter,matplotlib-basemap,Python,Matplotlib,Scatter,Matplotlib Basemap,我试图使用散点图在“hammer”底图上绘制数据集。然而,数据点不会绘制在大陆的顶部。我注意到在matplotlib中,也没有关于大陆的数据(我假设这是由于示例的性质)。我想知道我是否做错了什么,或者数据是否不能通过设计用“锤子”绘制在大陆顶部 如果是这种情况,是否有一个理想的底图用于绘制整个地球上的散点图数据(使用地形图会很好,但我会满足于这一点)?您可能缺少解释纬度数据的关键字。从Basemap.scatter的帮助中: 如果latlon关键字设置为True,则x、y表示为经度 以度为单位的

我试图使用散点图在“hammer”底图上绘制数据集。然而,数据点不会绘制在大陆的顶部。我注意到在matplotlib中,也没有关于大陆的数据(我假设这是由于示例的性质)。我想知道我是否做错了什么,或者数据是否不能通过设计用“锤子”绘制在大陆顶部


如果是这种情况,是否有一个理想的底图用于绘制整个地球上的散点图数据(使用地形图会很好,但我会满足于这一点)?

您可能缺少解释纬度数据的关键字。从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()

这太棒了,谢谢!我已经使用x,y=m(lons,lats)设置了latlon数据。我缺少的是zorder=10。不过,我很高兴知道我可以用latlon=True来代替scatter。我很幸运,我选择了一个沿海城市作为测试案例,我可以看到一半的标记——很明显,它位于大陆之下,而不是海洋之下。