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

Plotly中通过下拉菜单切换等值区域图符号系统的实现问题

Plotly 新冠疫情分级统计地图切换功能修复

核心问题排查

  • 变量名不一致:创建图表时将实例赋值给map,后续操作调用了未定义的fig变量,属于基础语法错误
  • 按钮参数格式错误:restyle方法需要修改的所有数据属性要放在同一个字典参数内,原代码将z和colorscale拆分为两个参数,导致属性更新失效
  • 多处使用全角引号,不符合Python语法要求

修正后完整代码

import pandas as pd
import plotly.graph_objects as go
from plotly.offline import plot

# 读取数据
df = pd.read_csv("covid.csv")

# 初始化choropleth数据
data = dict(
    type='choropleth',
    locations = df['Name'],
    locationmode = 'country names',
    z = df['Total'],
    marker_line_color = 'black',
    marker_line_width = 0.5,
    colorscale = "Greens",
    colorbar_title = "累计确诊数"
)

# 基础布局配置
layout = dict(
    title_text = '各国当日确诊数',
    title_x = 0.5,
    geo=dict(
        showframe = True,
        showcoastlines = True,
        projection_type = 'mercator'
    )
)

# 初始化图表对象
fig = go.Figure(data=[data], layout=layout)
fig.update_geos(fitbounds="locations", visible=True)

# 配置切换按钮
button1 = dict(
    method = "restyle",
    args = [{
        'z': [df["Total"]],
        'colorscale': "Greens",
        'colorbar.title': "累计确诊数"
    }],
    label = "累计确诊数"
)
button2 = dict(
    method = "restyle",
    args = [{
        'z': [df["1M_pop"]],
        'colorscale': "Reds",
        'colorbar.title': "每百万人确诊数"
    }],
    label = "每百万人确诊数"
)

# 更新布局添加按钮
fig.update_layout(
    width=1000,
    coloraxis_colorbar_thickness=23,
    updatemenus=[dict(
        y=1.1,
        x=0.275,
        xanchor='right',
        yanchor='bottom',
        active=0,
        buttons=[button1, button2]
    )]
)

# 输出HTML文件
plot(fig, filename='covid.html')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 23:09:04