Geopandas Explore - 重新排序图例中的项目

Geopandas Explore - Reorder Items in Legend

我正在使用 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 参数提供一个字典来覆盖默认图例,指定一个 'list-like' 图例列表'labels' 键的标签,这似乎是更改图例标签的唯一方法。:

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 ,000'],
                                         [',000 - ,999'],
                                         [',000 - 4,999'],
                                         ['5,000 - 9,999'],
                                         ['Greater than 0,000']]})

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

如有任何帮助,我们将不胜感激。如果定制起来更容易一些,这是一个很棒的方法。

目前无法使用 public API,因为代码中的顺序是 hard-coded。但是您可以尝试使用创建图例的私有函数来获得所需的结果。尽量不要在 long-term 中依赖它。我将在 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 ,000",
        ",000 - ,999",
        ",000 - 4,999",
        "5,000 - 9,999",
        "Greater than 0,000"],
    colors=['#2c7fb8','#a1dab4','#41b6c4','#253494','#ffffcc']
)
m

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