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

Folium绘制带邮编的Choropleth统计图时区域填充色未生效求助

问题原因

代码里有4个核心错误导致填充色不生效:

  • geo_data传值错误:你已经将tmp的邮编字段从CODE重命名为zipcode,但传入Choropleth的还是未修改的原始geo_df,二者字段不匹配
  • columns参数顺序写反:folium要求columns参数第一个放匹配主键(即邮编字段),第二个放数值展示字段(即未参保占比),你写反了顺序
  • key_on参数格式错误:key_on需要指向GeoJSON属性字段的完整层级,必须写成feature.properties.你的字段名格式,不能直接写字段名
  • 填充透明度设置过低:fill_opacity=0.2的透明度接近透明,即使渲染成功也很难看出颜色

修正后代码

import folium
import pandas as pd
import numpy as np
import os
import geopandas as gpd

geo_data_file=os.path.join('Zipcodes_Arc.geojson')
# 读取GeoJSON
geo_df = gpd.read_file(geo_data_file)
# 读取CSV数据
df = pd.read_csv(os.path.join('zip_uninsured.csv'))

# 统一两边邮编字段名和类型,避免匹配失败
geo_df = geo_df.rename(columns = {"CODE":"zipcode"})
# 确保两边邮编都是字符串格式,避免前导零导致的匹配失败
geo_df['zipcode'] = geo_df['zipcode'].astype(str)
df['zipcode'] = df['zipcode'].astype(str)

my_map = folium.Map(location=[39.95228, -75.16245], zoom_start=9,
                   detect_retina=True, control_scale=False)

folium.Choropleth(
        geo_data=geo_df,
        name='choropleth',
        data=df,
        # 修正顺序:先主键,后数值列
        columns=['zipcode', 'Uninsured'],
        # 修正key_on的完整路径
        key_on='feature.properties.zipcode',
        fill_color='OrRd',
        # 调高透明度方便查看
        fill_opacity=0.7,
        line_opacity=0.8,
        line_color='Blue',
        legend_name='未参保人口占比'
    ).add_to(my_map)

# 可以直接保存为html打开查看
my_map.save('uninsured_map.html')

额外排查点

如果修改后还是不生效,可以先打印两个数据集的邮编样本,确认两边的邮编格式、数值范围没有异常,排除邮编不匹配的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 11:24:02