Folium Choropleth分级统计图未正常显示填充颜色问题求助
测试数据源
- GeoJSON 文件:休斯顿邮编行政边界数据
- CSV 文件:各邮编区域OY(机遇青年)数量统计数据,代码中加载后赋值给变量
new
实现需求
创建 chloropleth 分级统计图,展示休斯顿各邮编(zipcode)区域的机遇青年(opportunity youth)数量分布。
实现代码
n = folium.Choropleth( geo_data=r'Zip_Codes.geojson', data=new, columns=['ZIPCODE','oy_count'], key_on='feature.properties.ZIP_CODE', fill_color='YlGn', nan_fill_color="White", fill_opacity=1, line_opacity=0.5, legend_name='Num of OY', highlight=True, line_color='black' ) n.add_to(htx_map2) folium.LayerControl().add_to(htx_map2) htx_map2
异常现象
代码运行后未输出预期的黄-绿色阶分级统计地图,仅显示无填充色的空白区域,异常效果如下:
问题原因与修复方案
核心错误是两个数据源的关联字段数据类型不匹配:
- GeoJSON 边界文件中存储邮编的字段
ZIP_CODE为字符串类型,而从CSV加载的统计数据new中,ZIPCODE列默认解析为数值(整数/浮点数)类型。Folium 做区域与统计值的关联匹配时,类型不一致会直接导致匹配失败,所有区域都会被判定为无对应统计值,因此填充了你设置的空值白色,无法显示预期的色阶。 - 修复方法非常简单,在初始化 Choropleth 前添加一行代码,将统计数据中的邮编列转为字符串类型,和GeoJSON中的字段类型保持一致即可:
new['ZIPCODE'] = new['ZIPCODE'].astype(str)
如果转类型后仍有零散区域不显示,可进一步检查两边的邮编值格式是否统一,比如是否存在前导零缺失、字段值带多余空格等问题,确保同一邮编在两个数据源中的值完全相等即可正常渲染。
内容的提问来源于stack exchange,提问作者Sejal Gupta
相关产品推荐
相关产品推荐

