散点图数据不会出现在'hammer'底图中的大陆上

Wil*_*laB 5 python scatter matplotlib matplotlib-basemap

我试图使用散点图在'hammer'底图上绘制数据集.但是,数据点不会在各大洲之上绘制.我注意到在matplotlib 示例中,大陆上也没有数据(我假设这是由于示例的性质).我想知道我是否做错了什么,或者是否使用"锤子"设计无法在各大洲上绘制数据.

如果是这种情况,是否有一个理想的底图用于在整个地球上绘制散点图数据(使用浮雕图会很棒,但此时我会满足于什么)?

cph*_*wis 8

您可能错过了解释lat-lon数据的关键字.从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()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • 太好了,谢谢!我已经在使用* x,y = m(lons,lats)*设置latlon数据。我所缺少的是* zorder = 10 *。虽然,很高兴知道我可以分散使用* latlon = True *。 (2认同)