【问题标题】:Geopandas Explore - Reorder Items in LegendGeopandas 探索 - 重新排序图例中的项目
【发布时间】:2022-01-29 00:27:48
【问题描述】:

我正在使用 Geopandas Explore 方法在地图上绘制一些人口普查数据,并且在自定义图例时遇到了一些问题。作为背景,我从人口普查中收集了家庭区域级别的收入数据,并创建了一个家庭收入分类列,我在其中为每个区域分配了 5 个收入类别之一。当我在地图上绘制数据集时,图例似乎默认为我想覆盖的字母数字顺序。

这是我的代码:

hhi_gdf.explore(column='med_hh_inc_test',
                   cmap=['#2c7fb8','#a1dab4','#41b6c4','#253494','#ffffcc'],
                   tiles="CartoDB positron",
                   style_kwds={'opacity':.40,
                               'fillOpacity':.60},
                   legend_kwds={'caption':'Median Household Income'}) 

这是默认结果: default legend order

我已经尝试过这个来覆盖默认图例顺序 the documentation 说您可以通过向 legend_kwds 参数提供字典来覆盖默认图例,为“标签”键指定一个“类似列表”的图例标签列表似乎是改变图例标签的唯一方法。:

hhi_gdf.explore(column='med_hh_inc_test',
                   cmap=['#2c7fb8','#a1dab4','#41b6c4','#253494','#ffffcc'],
                   tiles="CartoDB positron",
                   style_kwds={'opacity':.40,
                               'fillOpacity':.60},
                   legend_kwds={'colorbar':False,
                                'caption':'Median Household Income',
                                'labels':[['Less than $45,000'],
                                         ['$45,000 - $74,999'],
                                         ['$75,000 - $124,999'],
                                         ['$125,000 - $199,999'],
                                         ['Greater than $200,000']]})

这是结果图(图例顺序没有区别): no change in legend order

对此的任何帮助将不胜感激。这是一个很棒的方法,如果它更容易定制的话。

【问题讨论】:

    标签: python mapping visualization geopandas folium


    【解决方案1】:

    目前无法使用公共 API,因为订单是硬编码在代码中的。但是您可以尝试使用创建图例的私有函数来获得所需的结果。只是尽量不要长期依赖它。我将在 GeoPandas 中打开一个关于此的问题,以直接在那里实现这种自定义。

    from geopandas.explore import _categorical_legend
    
    m = hhi_gdf.explore(
        column='med_hh_inc_test',
        cmap=['#2c7fb8','#a1dab4','#41b6c4','#253494','#ffffcc'],
        tiles="CartoDB positron",
        style_kwds={'opacity':.40,'fillOpacity':.60},
        legend=False
    )
    _categorical_legend(
        m, 
        title="Median Household Income", 
        categories=[
            "Less than $45,000",
            "$45,000 - $74,999",
            "$75,000 - $124,999",
            "$125,000 - $199,999",
            "Greater than $200,000"],
        colors=['#2c7fb8','#a1dab4','#41b6c4','#253494','#ffffcc']
    )
    m
    

    您可能需要对 cmap 进行一些改组,以确保它全部正确映射。

    【讨论】:

    • 这成功了!感谢您的帮助 - 我已经搞砸了几个小时,我从没想过使用私有功能。我在“cmap”中保留了相同的颜色顺序,但更改了提供给颜色参数的列表的顺序。
    • 想知道 cmap 或其他参数是否可以接受列表列表或字典来指定图例项目的顺序? cmap = [["Less than $45,000",'#ffffcc'],["$45,000 - $74,999",'#a1dab4'],["$75,000 - $124,999",'#41b6c4'],["$125,000 - $199,999",'#2c7fb8'],["Greater than $200,000",'#253494']] cmap = {{"Less than $45,000":'#ffffcc'},{"$45,000 - $74,999":'#a1dab4'},{"$75,000 - $124,999":'#41b6c4'},{"$125,000 - $199,999":'#2c7fb8'},{"Greater than $200,000":'#253494'}}
    • 是的,已经讨论了将值映射到颜色的字典,将来可能会支持,但我不能保证任何时间表。
    猜你喜欢
    • 2021-12-01
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 2017-06-16
    • 1970-01-01
    • 2019-06-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多