You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何调整Folium Choropleth地图的图例至正确刻度与颜色?

修正Folium Choropleth地图图例与实际数据范围不匹配的问题

你当前的代码将人口数据做了归一化处理,导致图例刻度显示01的范围,和真实人口(230012042384)不匹配,以下是修正方法:

你的原始代码:

state_data = pd.read_csv(r'D:\BaiduNetdiskDownload\US_folium\china-population.csv')

max_value = state_data['population'].max()
state_data['population'] /= max_value
bins = list(state_data['population'].quantile([i/10 for i in range(0, 11)]))


m = folium.Map(location=[37, 108], zoom_start=4)

folium.Choropleth(
    geo_data=r'D:\BaiduNetdiskDownload\US_folium\china-counties.json',
    data=state_data,
    columns=["county", "population"],
    key_on="feature.id",
    fill_color="BuPu",
    fill_opacity=0.7,
    line_opacity=0.1,
    legend_name="人口数量",
    bins=bins,
    reset=True,
).add_to(m)

问题根源

你对原始人口数据执行了state_data['population'] /= max_value的归一化操作,把所有数值压缩到了0~1区间,Choropleth基于这个归一化后的数据生成图例,自然和真实人口范围不符。

修正后的代码

直接基于原始人口数据计算分位数区间,保留真实数值:

import pandas as pd
import folium

state_data = pd.read_csv(r'D:\BaiduNetdiskDownload\US_folium\china-population.csv')

# 基于原始人口数据计算分位数bins,取消归一化步骤
bins = list(state_data['population'].quantile([i/10 for i in range(0, 11)]))

m = folium.Map(location=[37, 108], zoom_start=4)

folium.Choropleth(
    geo_data=r'D:\BaiduNetdiskDownload\US_folium\china-counties.json',
    data=state_data,
    columns=["county", "population"],
    key_on="feature.id",
    fill_color="BuPu",
    fill_opacity=0.7,
    line_opacity=0.1,
    legend_name="人口数量",
    bins=bins,
    reset=True,
).add_to(m)

# 可选:保存地图到本地查看效果
# m.save('china_population_map.html')

说明

  • 移除了归一化步骤,保留原始人口数值,确保Choropleth使用真实数据计算颜色区间
  • 生成的bins基于原始数据的分位数,颜色划分逻辑不变,但图例刻度会显示真实的人口范围
  • 地图上的区域颜色仍会按人口分位数区间对应,同时图例能准确反映各颜色代表的人口数量

内容的提问来源于stack exchange,提问作者dongrixinyu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 15:10:23