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 进行一些改组以确保它全部正确映射。
我正在使用 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 进行一些改组以确保它全部正确映射。