在matplotlib-basemap中绘制颜色编码标记

时间:2015-03-19 14:02:21

标签: python matplotlib matplotlib-basemap

我有以下变量,我想在地图上绘制:  Lons,经度列表Lats,纬度列表和Vals,每个位置的值列表。

为了绘制位置,我做了一个简单的

x,y=Mymap(Lons,Lats)
Mymap.scatter(x,y,marker='o',color='red')

问:如何最好地将Vals转换为要传递到scatter的颜色列表(热图),以便每个x,y对得到与颜色匹配的值?

底图文档相当缺乏,并且没有一个示例符合我的目的。

我可能会遍历整个LatsLonsVals,但考虑到底图的速度有多慢,我宁愿避免这种情况。我已经需要绘制大约800张地图,并且将其增加到大约100万张可能需要数年时间。

1 个答案:

答案 0 :(得分:3)

basemap scatter documentation只是引用pyplot.scatter documentation,您可以在其中找到参数 c (强调我的):

  

c :颜色或颜色序列,可选,默认

     

c 可以是单色格式字符串,也可以是长度为N的颜色规范序列,或使用cmap映射到颜色的N个数字序列和通过kwargs指定的规范(见下文)。请注意,c不应该是单个数字RGB或RGBA序列,因为它与要进行颜色映射的值数组无法区分。 c可以是2-D阵列,其中行是RGB或RGBA。

因此,如果您只是将vals传递给c,则matplotlib应将值转换为标准色图或chosen colormap上的颜色。要显示哪个颜色映射到哪个值,您可以使用colorbar

示例代码:

import matplotlib.pyplot as plt

lons = range(50)
lats = range(25, 75)
vals = range(50,100)

plt.scatter(lons, lats, c=vals, cmap='afmhot')
plt.colorbar()
plt.show()