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

使用GeoPandas数据框绘制Plotly Mapbox Choropleth地图报错如何解决

问题原因与修复方案

错误原因

  • 最直接的报错诱因:px.choropleth_mapbox() 本身返回的是完整的Figure对象,你将其套入列表后传给go.Figure()的data参数,属于传入非法值,data参数仅接受trace类型对象组成的列表,不支持嵌套Figure对象。
  • GeoJSON参数格式不匹配:px.choropleth_mapbox的geojson参数要求传入标准GeoJSON规范的特征集合(FeatureCollection),直接传入GeoPandas的df.geometry列无法被正确解析,且需要保证GeoJSON中每个特征的id和你传入的locations值一一对应。
  • 参数名书写错误:调用go.Figure时传入的参数名Layout首字母大写,正确参数名应为小写的layout。

修复代码

首先先将GeoDataFrame转换为符合要求的GeoJSON结构:

import json
# 转换为标准GeoJSON
geojson_data = json.loads(df.to_json())
# 为每个特征绑定对应id,和df的id列匹配
for idx, feature in enumerate(geojson_data["features"]):
    feature["id"] = df["id"].iloc[idx]

更简洁的修复方案(推荐):直接使用px生成图形后更新布局

import plotly.express as px

fig = px.choropleth_mapbox(
    df,
    geojson=geojson_data,
    locations="id", # 直接传入列名即可,无需传入df['id']
    color="cnt",
    color_continuous_scale="Viridis"
)
# 更新布局配置
fig.update_layout(
    title="ch",
    mapbox_accesstoken=mapToken,
    width=1600,
    height=1200,
    mapbox={
        "style": "streets",
        "zoom": 10.5,
        "center": {
            "lat": boundingBox["centroid_lat"].values[0],
            "lon": boundingBox["centroid_lon"].values[0]
        }
    }
)
fig.show()

保留手动拼接Figure逻辑的修复方案

import plotly.graph_objects as go
import plotly.offline as plyoff

# 仅提取px生成的trace部分
trcs = px.choropleth_mapbox(
    df,
    geojson=geojson_data,
    locations="id",
    color="cnt",
    color_continuous_scale="Viridis"
).data

lout = go.Layout(
    title="ch",
    mapbox_accesstoken=mapToken,
    width=1600,
    height=1200,
    mapbox={
        "style": "streets",
        "zoom": 10.5,
        "center": {
            "lat": boundingBox["centroid_lat"].values[0],
            "lon": boundingBox["centroid_lon"].values[0]
        }
    }
)
# 参数名改为小写layout
plyoff.iplot(go.Figure(data=trcs, layout=lout))

内容的提问来源于stack exchange,提问作者Dr. Andrew

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 05:36:05