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

Plotly绘制印度Choropleth地图时州显示过小的修复咨询

解决印度Choropleth地图州显示比例异常的问题

问题根源

你当前的geo_df和geojson_data都是**区级(district)**数据,但你通过st_nm(州名)进行关联匹配,导致同一个州的所有区级边界被单独渲染;同时手动设置的缩放参数、重复的中心坐标配置,加上未适配地理范围,最终导致州显示过小、比例失真。

修复步骤

1. 聚合数据到州级(若目标为展示州级事故)

先把区级数据按州汇总事故数,避免重复渲染:

# 按州名聚合事故总数
state_geo_df = geo_df.groupby("st_nm")["Accidents"].sum().reset_index()

2. 使用州级GeoJSON文件

替换现有的区级GeoJSON为印度各州边界的GeoJSON(确保GeoJSON的properties字段中包含st_nm,与你的数据字段匹配)。

3. 调整地图配置,自动适配地理范围

修改代码,去掉重复的中心设置,添加自动适配范围的参数,同时优化投影:

import plotly.express as px

# 加载州级GeoJSON(替换为你的州级GeoJSON数据)
state_geojson = ...

fig = px.choropleth(
    state_geo_df,
    geojson=state_geojson,
    locations="st_nm",
    featureidkey="properties.st_nm",
    color='Accidents',
    center=dict(lat=22, lon=78)  # 印度地理中心坐标
)

fig.update_geos(
    projection_type="mercator",
    fitbounds="locations",  # 自动适配GeoJSON数据范围,核心修复点
    visible=False  # 隐藏默认世界地图背景,仅显示目标区域
)

fig.show()

额外说明

  • 如果你的目标是展示区级事故数据,无需聚合,但要将locations设为district,featureidkey设为properties.district,同时保留fitbounds="locations"参数,让地图自动适配所有区级边界的范围。
  • fitbounds="locations"会让Plotly自动计算并聚焦你的GeoJSON数据的地理范围,比手动调整projection_scale更精准,是解决显示过小问题的关键。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 09:23:15