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

Plotly绘制印度Choropleth地图显示空白无数据问题

问题根因

你遇到的空白地图问题由3个核心原因导致:

  • 未指定GeoJSON匹配字段:px.choropleth 默认读取GeoJSON中每个feature的顶层id字段和DataFrame的locations列做匹配,你的GeoJSON中唯一标识存放在_id字段下,且没有通过featureidkey参数指定匹配路径,所有区域都无法关联到对应数据,因此无填充。
  • 视图范围未适配:仅设置scope='asia'时地图默认显示全亚洲视角,印度区域占比极低,即便数据匹配成功也很难看到填充效果。
  • 数据格式不统一:合并后的DataFrame中_id列同时存在数字类型(如8、9)和字符串类型(如row_112),类型差异会导致值相同的条目也匹配失败;同时CHANDIGARH存在重复条目,也可能干扰渲染逻辑。
修复代码

直接替换绘图部分的代码即可:

# 1. 统一_id字段类型为字符串,消除类型不匹配问题
df['_id'] = df['_id'].astype(str)
# 2. 去除重复条目,避免渲染异常
df = df.drop_duplicates(subset=['_id']).reset_index(drop=True)

fig = px.choropleth(
    df,
    geojson=india_map,
    locations='_id',
    featureidkey='_id', # 显式指定GeoJSON中用于匹配的字段路径
    color='Stat',
    scope='asia'
)
# 3. 自动缩放到印度数据所在区域,隐藏无关地理边界
fig.update_geos(fitbounds="locations", visible=False)
fig.show()
补充说明

如果运行后仍有个别区域无填充,先打印india_map['features'][0].keys()确认_id的存放位置:如果_id是嵌套在properties字段下的,把featureidkey参数值改为properties._id即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 17:15:44