【问题标题】:Plotting color coded markers in matplotlib-basemap在 matplotlib-basemap 中绘制颜色编码标记
【发布时间】:2015-03-19 14:02:21
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

    标签: python matplotlib matplotlib-basemap


    【解决方案1】:

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

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

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

    【讨论】:

    • 谢谢,这行得通。我只是在主要文档中查看,因为我认为 api 部分是内部的东西,只有当你想真正改变引擎盖下的东西时才有用。
    猜你喜欢
    • 2013-04-02
    • 1970-01-01
    • 2013-09-08
    • 2014-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-17
    • 2012-05-07
    相关资源
    最近更新 更多