Dash/Plotly联动图表更新失败问题排查求助
Dash联动图表无法更新问题排查
我尝试创建两个联动图表:点击fig_overview图表中的数据点时,fig_detail图表应切换为对应视图。严格按照官方教程实现,初始图表显示正常,但第二个图表无法更新。
运行环境
- WSL
- Python 3.10.12
- jupyterlab 4.1.8
- dash 2.17.0
代码示例
import numpy as np import plotly.express as px from dash import Dash, dcc, html from dash.dependencies import Input, Output, State import dash_bootstrap_components as dbc import pandas as pd DASH_THEME = dbc.themes.SOLAR pd.options.plotting.backend = "plotly" def fig_overview(data): n = 30 fig = px.scatter(x=np.random.random((n,)), y=np.random.random((n,))) return fig def fig_detail(data, task): n = 30 fig = px.scatter(x=np.random.random((n,)), y=np.random.random((n,))) return fig app = Dash('prrdash', external_stylesheets=[dbc.themes.SOLAR]) app.layout = html.Div(children=[ dcc.Graph(id='fig_overview', figure=fig_overview(None)), dcc.Graph(id='fig_detail', figure=fig_detail(None, None)) ]) @app.callback( Output('fig_detail', 'figure'), Input('fig_overview', 'clickData') ) def select_project(clickData): if clickData is not None: fig = fig_detail(None, None) return fig app.run(debug=True)
注:原代码缺失
dash_bootstrap_components和pandas的导入语句,已补充以保证代码可运行
已尝试的排查方法
- 验证
task提取逻辑:在select_project()中print(task)能得到预期结果 - 验证
fig_detail()生成器:在回调内调用fig.show()可正常显示预期图表 - 修改
app.run()的mode和jupyter_mode参数 - 调整布局(当前已是最简DOM结构)
- 修改组件
id
当前状态
目前有一个临时解决方案:将详情图表包裹在额外div中,通过替换children生成新dcc.Graph可实现更新,但希望了解最简方案失败的原因,寻求进一步排查建议或调试思路。
内容的提问来源于stack exchange,提问作者Jörg Neulist
相关产品推荐
相关产品推荐

