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

Plotting color coded markers in matplotlib-basemap

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

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

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

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

底图文档相当缺乏,none 个示例符合我的目的。

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

basemap scatter documentation simply refers to the pyplot.scatter documentation,这里可以找到参数c(重点是我的):

c : color or sequence of color, optional, default

c can be a single color format string, or a sequence of color specifications of length N, or a sequence of N numbers to be mapped to colors using the cmap and norm specified via kwargs (see below). Note that c should not be a single numeric RGB or RGBA sequence because that is indistinguishable from an array of values to be colormapped. c can be a 2-D array in which the rows are RGB or RGBA, however.

因此,如果您只是将 vals 传递给 c,matplotlib 应该将这些值转换为标准颜色图或 chosen colormap. To show which color is mapped to what value you can use the 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()