You need to enable JavaScript to run this app. 如何用Python及自有数据制作含美国各州及DC的Plotly Choropleth Map
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python及自有数据制作含美国各州及DC的Plotly Choropleth Map

解决包含DC的美国州级Choropleth图实现方案

问题根源

Plotly内置locationmode='USA-states'模式匹配的矢量边界数据源本身未纳入哥伦比亚特区(DC)的几何信息,因此即使传入DC的州代码也无法匹配显示;而create_choropleth方法默认绑定的是全美县级粒度矢量数据,无法满足州级粒度的展示需求。

可落地实现路径

放弃Plotly内置的定位模式,使用覆盖50个州+DC的州级粒度geojson自定义数据源匹配自有数据,完全可以同时满足州级粒度展示、包含DC的需求,具体实现步骤如下:

  1. 数据源准备
    准备符合三个要求的州级矢量geojson文件:
    • 几何粒度为州级,无县级拆分
    • 每个几何的属性字段中存储对应行政区的两字母缩写(和自有数据里statecode列的取值规则一致,比如DC、CA、NY)
    • 确认数据源明确包含DC的多边形边界,避免出现只有50个州、遗漏DC的情况
  2. 基于go.Choropleth的代码调整
    替换原有内置定位模式的逻辑,传入自定义geojson并配置正确的匹配规则,修正后的可运行代码示例:
    import plotly.graph_objects as go
    import json
    
    # 读取准备好的、覆盖50州+DC的州级geojson
    with open("your_state_level_geo_data.geojson", "r", encoding="utf-8") as f:
        usa_state_geo = json.load(f)
    
    fig = go.Figure(data=go.Choropleth(
        geojson=usa_state_geo,
        locations=df['statecode'],
        # 匹配geojson中存储两字母州缩写的属性路径,需和实际geojson字段保持一致
        featureidkey="properties.state_abbr",
        z=df['buyers'].astype(float),
        colorscale='Reds',
        autocolorscale=False,
        text=df['mytext'], 
        marker_line_color='white',
        colorbar_title="Total buyers"
    ))
    
    # 调整地图显示范围,适配美国本土视图
    fig.update_geos(
        scope="usa",
        projection_type="albers usa",
        showlakes=True,
        lakecolor="rgb(255, 255, 255)"
    )
    
  3. 方案注意事项
    • 重点核对featureidkey的配置值:不同来源的geojson存储州缩写的字段路径存在差异,若字段路径不匹配会出现数据和几何对不上的问题
    • create_choropleth方法的设计逻辑就是面向县级粒度展示,如果要坚持使用该方法,需要手动从县级数据中过滤聚合到州级边界,整体实现成本远高于上述自定义geojson的go.Choropleth方案,不推荐优先选择

常见踩坑提示:部分公开的美国州级边界数据源默认只收录50个州的几何,未单独纳入DC的边界,选取数据源时需要提前确认覆盖范围。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.28 17:45:00