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

Plotly choropleth地图按钮更新color_discrete_map及布局调整问题

Plotly Choropleth 问题修复方案

问题1:交互更新后颜色异常修复

故障原因

代码同时配置了互斥的color_continuous_scale(连续色阶)和color_discrete_map(离散颜色映射)参数,布尔类型的疫苗列被Plotly默认识别为数值型,优先调用连续色阶,导致设置的蓝/白离散映射完全失效。

修复步骤

  • 移除color_continuous_scale="spectral_r"参数,避免参数冲突
  • 新增color_discrete_sequence=None参数,强制Plotly触发离散颜色映射逻辑
  • 可选:提前将数据中疫苗布尔列转为字符串类型,彻底避免类型识别偏差

问题2:下拉按钮顶部居中调整

在updatemenus配置项中新增x=0.5、xanchor="center"两个属性即可,x=0.5对应画布水平中点,xanchor设置按钮的锚点为中心,保证精准居中。可额外调整y参数控制按钮垂直位置,避免和标题重叠。

修正后完整代码

import plotly.express as px
import plotly.graph_objects as go

cols_dd = ["Johnson&Johnson","Sinopharm","Sputnik V","Moderna","AstraZeneca","Pfizer","Sinovac","Covaxin"]

fig = go.Figure()

for value in cols_dd:
    fig.add_traces(
        px.choropleth(
            df,
            locations="Iso code",  # Spatial coordinates
            color=value,  # Data to be color-coded
            hover_data={'Iso code':False},
            # 移除冲突的连续色阶参数
            # color_continuous_scale="spectral_r",
            color_discrete_sequence=None, # 新增参数强制启用离散映射
            hover_name="Location",
            color_discrete_map={True: 'blue', False: 'white'})
        .update_traces(visible= True if value==cols_dd[0] else False)
        .data
    )

fig.update_geos(scope="africa")
fig.update_layout(showlegend=True, font=dict(size=12), width = 800, height = 650, margin=dict(l=0,r=0,b=0,t=70),
    title= "<b>Vaccination Brands and Statistics Across Africa</b>",
    updatemenus=[
        {
            "x": 0.5, # 水平位置设为中点
            "xanchor": "center", # 锚点设为按钮中心
            "y": 1.1, # 可调整垂直位置避免和标题重叠
            "buttons": [
                {
                    "label": value,
                    "method": "update",
                    "args": [
                        {"visible": [v2 == value for v2 in cols_dd]},
                        #{"title": f"<b>{value}</b>"},
                    ],
                }
                for value in cols_dd
            ]
        }
    ]
)

fig.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 05:24:05