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

Plotly绘制不列颠哥伦比亚省多边形GeoDataFrame时几何图形不显示

问题根因
  • px.choropleth的geojson参数不支持直接传入GeoPandas的Geometry列(GeoSeries),要求接收带features字段的标准GeoJSON结构,且每个几何特征需要有明确的id属性,才能和locations参数传入的标识值做匹配,你当前的传参方式导致Plotly无法关联数据和几何图形,因此画布为空。
  • 你对locations参数的理解正确,它的作用就是将DataFrame的每行数据和GeoJSON中的单个多边形做一一映射,要求传入的标识值和GeoJSON中每个feature的id完全对应。
修复后代码
import pyproj
import geopandas as gpd
import plotly.express as px

# 坐标重投影逻辑保留,可简化写法
pacificrange_CP_web.to_crs(epsg=4326, inplace=True)

# 生成符合Plotly要求的GeoJSON结构,为每个feature绑定对应polyid作为id
geojson_data = pacificrange_CP_web.__geo_interface__
for i, feature in enumerate(geojson_data["features"]):
    feature["id"] = pacificrange_CP_web.iloc[i]["polyid"]

# 绘图参数调整
fig = px.choropleth(
    pacificrange_CP_web, 
    geojson=geojson_data, 
    locations="polyid", # 直接传入列名即可,无需传入完整Series
    color="protected"
)
fig.update_geos(fitbounds="locations", visible=False)
fig.show()
补充排查建议
  • 提前检查polyid列不存在空值、重复值,确保每个id唯一对应一个多边形
  • 如果绘制的是小范围区域,可临时将update_geos的visible参数改为True,确认视图范围是否正常适配
  • 小区域绘制更推荐使用px.choropleth_mapbox,展示精度更高,仅需额外添加mapbox_style="carto-positron"参数即可,无需申请额外token

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 13:15:00