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

如何使用Plotly绘制毛里求斯分区级choropleth等值地图

核心故障原因

px.choropleth 调用自定义GeoJSON绘制次级行政区地图时,传入locationmode='country names'、geo_scope这类参数会强制触发Plotly内置公共边界库的匹配逻辑,完全覆盖你传入的自定义毛里求斯行政区GeoJSON,直接导致要素匹配失败、无图形渲染。

分步修复方案
  • 移除所有内置地图相关参数
    删掉代码里的locationmode='country names'、geo_scope='africa'/'world'配置,这类参数仅适配Plotly自带的全球/国家层级边界,和你本地的自定义一级行政区GeoJSON完全不兼容。
  • 显式指定GeoJSON与DataFrame的匹配规则
    给px.choropleth传入三个必填的自定义GeoJSON相关参数:
    • geojson:传入你读取完成的毛里求斯行政区GeoJSON对象
    • locations:传入DataFrame中存储行政区匹配键的列,如果你用行政区名称匹配就传df['Location'],用提前映射好的id匹配就传对应id列
    • featureidkey:指定GeoJSON中用于匹配的属性路径,必须带properties.前缀:如果用行政区名称匹配就设为"properties.name_1",如果用id匹配就设为"properties.id_1"
  • 保留自动适配边界配置
    保留fig.update_geos(fitbounds="locations", visible=False)配置即可,该逻辑会自动根据你传入的GeoJSON要素范围,将视图缩放到毛里求斯行政区全域,不需要额外设置中心点、缩放等级。
  • 坐标系校验(可选排查项)
    如果完成上述配置后仍无渲染,检查GeoJSON坐标系是否为WGS84(EPSG:4326),Plotly仅支持未投影的经纬度格式GeoJSON,若为其他投影坐标系需先做坐标转换。
最小可运行代码示例
import pandas as pd
import plotly.express as px
import json

# 加载本地数据
with open("毛里求斯行政区GeoJSON文件路径.json", "r", encoding="utf-8") as f:
    mu_geojson = json.load(f)
# 注意制表符分隔文件必须指定sep="\t"
job_df = pd.read_csv("LocationJobCount.csv", sep="\t")

# 绘制分区填色图
fig = px.choropleth(
    job_df,
    geojson=mu_geojson,
    locations="Location",
    featureidkey="properties.name_1", # 若用id_1匹配则修改为"properties.id_1"
    color="岗位计数字段名", # 替换为你csv中存储岗位数量的实际字段名
    color_continuous_scale="Blues"
)

# 自动适配边界
fig.update_geos(fitbounds="locations", visible=False)
fig.show()
高频踩坑提醒
  • featureidkey参数必须加properties.前缀,GeoJSON的所有属性字段都存储在每个要素的properties节点下,直接写字段名会匹配失败
  • 读取csv时必须指定sep="\t",否则会把制表符识别为普通字符,导致Location字段读取错误、和GeoJSON属性匹配不上
  • 不需要额外给GeoJSON手动设置id字段,通过featureidkey指定属性路径即可完成匹配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 10:06:36