Folium Choropleth报错排查:key_on疑误与ColorBrewer代码无效问题
解决Folium Choropleth的「blue is not a valid ColorBrewer code」错误
嘿,我看你折腾了半天key_on参数,结果报错根源其实不在这儿——是你用的颜色代码不符合ColorBrewer的规范要求!Folium的Choropleth组件只认ColorBrewer体系里的调色板名称,比如'Blues'(首字母大写、复数形式),而你大概率写了小写的'blue',这就触发了那个ValueError。
快速修复步骤
替换无效的颜色代码
把代码里类似cmap='blue'的部分改成合法的ColorBrewer调色板名,常用的蓝色系选项是'Blues'(从浅蓝到深蓝的渐变),其他可选的比如'Greens'、'OrRd'(橙红色系)、'PuBu'(紫蓝色系)都可以。要是不确定哪些合法,直接用matplotlib的plt.colormaps()就能列出所有可用的选项。适配你场景的完整示例代码
结合你的澳大利亚邮编数据和tas_kW_series,正确的Choropleth调用应该是这样的:import folium # 初始化地图(以塔斯马尼亚为中心,可根据数据调整坐标) m = folium.Map(location=[-42.8821, 147.3272], zoom_start=7) # 添加光伏装机容量的Choropleth图层 folium.Choropleth( geo_data='你的塔斯马尼亚邮编GeoJSON文件路径', data=tas_kW_series, key_on='feature.properties.pc_int', # 你已确认匹配没问题,无需修改 columns=[tas_kW_series.index, tas_kW_series.values], fill_color='Blues', # 这里换成合法的调色板名 fill_opacity=0.7, line_opacity=0.2, legend_name='光伏装机容量 (kW)', bins=5, # 可根据数据分布调整分箱数 reset=True ).add_to(m) # 保存地图到本地 m.save('tasmania_solar_installations.html')自定义分箱(可选)
要是默认分箱不符合你的数据情况,你可以手动指定分箱区间,比如:bins=[0, 10, 50, 200, 1000, float('inf')]把这个参数加到Choropleth里,就能更精准地对应不同装机容量的着色效果了。
额外提醒
你之前移除GeoJSON中不存在的邮编数据这一步很关键,确保了数据和地理边界的匹配,这部分不用改。要是还是担心,可以先去掉cmap参数用默认值测试,确认图层能正常渲染后再换成你想要的调色板。
内容的提问来源于stack exchange,提问作者Nathan
相关产品推荐
相关产品推荐

