如何用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
相关产品推荐
相关产品推荐

