【问题标题】:How can I create a legend for a cartopy and Matplotlib plot in python?如何在 python 中为 cartopy 和 Matplotlib 图创建图例?
【发布时间】:2021-02-03 00:11:31
【问题描述】:

我正在根据该点的变量将地球上的点(经纬度坐标)分类。 我有一个数组(360 x 720)(地球的纬度、经度网格的分辨率),其中包含每个点的适当分类作为数字, 有13个类别;甲、乙、丙、... 在我的 360x 720 数组中,这些类别表示为 1、2、3、...、13。

我可以通过 cartopy 和 matplotlib 进行映射,但我一直在尝试制作一个图例/键来显示每种颜色映射代表的类别,我能得到的最好的结果是一个无用的颜色条。

 ax = plt.axes(projection=ccrs.PlateCarree()) #cartopy

preplot = plt.contourf(lons, lats, Map, 17,
             transform=ccrs.PlateCarree(), cmap = "tab20")
ax.coastlines() # cartopy
cb = plt.colorbar(preplot, orientation="horizontal")

plt.title("1901")

plt.show()

给出: enter image description here 地图和颜色条

对不起,如果这不是所有需要的信息

【问题讨论】:

    标签: python matplotlib cartopy


    【解决方案1】:

    如果我正确理解您的问题,您想将所有 13 个类别的标签添加到您的颜色条中吗?在这种情况下,您应该在颜色条上设置总共 13 个刻度(因为您有 13 个类别),使用:

    cb.set_ticks([i for i in range(1, 14, 1)])
    

    现在,您应该会在颜色条上看到总共 13 个刻度。然而,目前ticklabels 是数字1-13。要更改此设置,您可以使用cb.set_ticklabels(<list_of_strings>)。所以,例如:

    cb.set_ticklabels(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm'])
    

    在这种情况下,您的完整代码将是:

    ax = plt.axes(projection=ccrs.PlateCarree()) #cartopy
    
    preplot = plt.contourf(lons, lats, Map, 17,
                 transform=ccrs.PlateCarree(), cmap = "tab20")
    ax.coastlines() # cartopy
    cb = plt.colorbar(preplot, orientation="horizontal")
    
    # Update the colorbar ticks + labels
    cb.set_ticks([i for i in range(1, 14, 1)])
    cb.set_ticklabels(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm'])
    
    plt.title("1901")
    
    plt.show()
    

    【讨论】:

    • 这非常有效,谢谢,我现在正在努力为地图/颜色条获取一个颜色图,其中包含 13 种颜色,以便所有内容都对齐
    • @Morgan,this question 的答案会帮助你吗?请记住,颜色图基本上是颜色的查找列表,因此原则上您可以从任何颜色图中提取 13 种颜色并将它们放入您自己的颜色图中(使用 matplotlib.colors.LinearSegmentedColormap 创建)。随后,您必须为您的颜色图定义适当的边界/箱(使用matplotlib.colors.BoundaryNorm)并执行一些规范化。
    猜你喜欢
    • 2020-12-02
    • 2021-12-13
    • 2011-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-08
    • 2011-02-08
    相关资源
    最近更新 更多