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

使用Plotly创建含阿拉斯加、夏威夷插图的Mapbox分级统计图实现方法

分级统计图层叠实现方案

核心结论

完全可以在基础choropleth图层上叠加额外的分级统计图层,Mapbox类型的choropleth支持度最好,操作逻辑非常简单,可直接复用你现有底图代码实现。

实现步骤

  1. 首先运行你提供的代码生成基础底图对象fig
  2. 构建需要叠加的新图层的choropleth对象,注意调整透明度避免遮挡底图,不同指标需要指定独立颜色轴避免冲突
  3. 使用add_trace()方法将新图层的轨迹追加到基础底图中
  4. 按需配置新增图层的颜色条、层级等参数后渲染即可

示例代码

# 你原有基础底图的生成代码保持不变,生成fig对象
fig = px.choropleth_mapbox(
    df_mar,
    geojson=puma,
    locations="stpuma",
    color="inter_pct",
    range_color=(0,25),
    color_continuous_scale="Viridis",
    labels={"inter_pct": "Marriage (%)"},
    center={"lat": 37.0902, "lon": -95.7129},
    zoom=4.2,
    opacity=1.0,
    mapbox_style="white-bg"
)
fig.update_layout(
    coloraxis_colorbar=dict(
        bgcolor="rgba(22,33,49,1)",
        title="Marriage,<br>Percent Share",
        titlefont=dict(
            color="rgba(255,255,255,1)"
        ),
        tickfont=dict(
            color="rgba(255,255,255,1)"
        ),
    ),
    margin=dict(
        l=50,
        r=50,
        b=50,
        t=50,
        pad=4
    ),
    paper_bgcolor = "rgba(8,18,23,1)",
    plot_bgcolor = "rgba(8,18,23,1)",
    showlegend = True,
    annotations = [
        dict(
            x=-0.025,
            y=-0.04,
            xref='paper',
            yref='paper',
            text='Source: Census ACS 5 2015-2019',
            showarrow = False,
            font=dict(
                color="rgba(255,255,255,1)"
            ),
            bgcolor="rgba(8,18,23,1)",
        )
    ]
)
fig.update_traces(
    marker_line_width=0,
    below="waterway"
)

# ---------- 以下是新增叠加图层的代码 ----------
# 构造第二个图层的数据集df_extra和对应geojson(示例为阿拉斯加、夏威夷相关数据)
fig_extra = px.choropleth_mapbox(
    df_extra,
    geojson=puma_extra,
    locations="stpuma",
    color="target_metric", # 替换为你要展示的第二个指标字段名
    range_color=(0, 100), # 第二个指标的数值范围
    color_continuous_scale="RdBu_r",
    opacity=0.7, # 透明度小于1避免完全遮挡底图
    mapbox_style="white-bg"
)
# 把新图层的轨迹添加到底图中
fig.add_trace(fig_extra.data[0])
# 配置第二个指标的颜色条,避免和第一个重叠
fig.update_layout(
    coloraxis2=dict(
        colorbar=dict(
            x=1.1, # 放置在第一个颜色条右侧
            bgcolor="rgba(22,33,49,1)",
            title="Second Indicator<br>Unit",
            titlefont=dict(color="rgba(255,255,255,1)"),
            tickfont=dict(color="rgba(255,255,255,1)")
        )
    )
)
# 调整新图层层级,确保显示在底图上方
fig.data[1].update(marker_line_width=0, below="")

# 渲染输出
fig.show(width=1920, height=1080)

注意事项

  • 如果使用非Mapbox的标准Plotly choropleth,实现逻辑完全一致,仅需将px.choropleth_mapbox替换为px.choropleth即可
  • 如果你需要实现阿拉斯加、夏威夷嵌入美国本土的展示效果,也可以直接修改AK和HI对应的geojson坐标,将其平移到本土西南侧,无需额外叠加图层,实现起来更简单
  • 多层叠加出现遮挡时,调整add_trace的顺序即可,先添加的图层在下方,后添加的图层在上方
  • 多个指标使用同一个颜色轴时,不需要额外配置coloraxis2,保持新图层和底图的颜色轴配置一致即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 14:24:00