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

如何用Plotly下拉菜单切换DataFrame更新图表数据?

Plotly下拉菜单切换DataFrame数据的修正方案

你的问题出在错误地将data_frame放在layout更新参数里,而且没有正确更新图表的trace数据。data_frame是Plotly Express创建图表时的初始化参数,不能通过update方法的layout部分修改。要切换数据,需要直接更新trace的x和y值。

修正后的代码如下:

import plotly.express as px

data1 = {'x': [1, 2, 3, 4, 5], 'y': [10, 15, 13, 17, 20]}
data2 = {'x': [1, 2, 3, 4, 5], 'y': [5, 8, 9, 12, 10]}

# 初始化图表,使用data1
fig = px.line(data1, x='x', y='y', title="Data 1")

fig.update_layout(
    updatemenus=[
        dict(
            active=0,
            buttons=list([
                dict(label="Data1",
                     method="update",
                     args=[
                         # 第一个参数:更新trace的x和y数据(对应图表中的第1个trace,所以用列表包裹)
                         {'x': [data1['x']], 'y': [data1['y']]},
                         # 第二个参数:更新layout内容
                         {'title': "Data 1"}
                     ]),
                dict(label="Data2",
                     method="update",
                     args=[
                         {'x': [data2['x']], 'y': [data2['y']]},
                         {'title': "Data 2"}
                     ]),
            ]),
        )
    ])

fig.show()

关键修改说明

  • 移除了无效的data_frame参数,改用直接更新trace的x和y数据,这是切换数据的正确方式。
  • args的第一个元素是trace数据的更新,因为图表只有一条线,所以用[data1['x']]这样的列表格式对应单个trace。
  • 不再需要visible参数,因为我们是直接替换现有trace的数据,而非显示/隐藏不同的trace。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 02:32:12