Python 如何正确使用Plotly';s`@app.callback`函数?
我使用Plotly显示多个连接到另一个的数据集。当用户单击主绘图中的某个点时,三个子绘图将相应地更改,如本gif所示: 这是使用Plotly的Python 如何正确使用Plotly';s`@app.callback`函数?,python,callback,plotly,Python,Callback,Plotly,我使用Plotly显示多个连接到另一个的数据集。当用户单击主绘图中的某个点时,三个子绘图将相应地更改,如本gif所示: 这是使用Plotly的@app.callback函数完成的,如下所示: @app.callback( Output('mesh', 'figure'), [Input('overview', 'clickData')]) def update_figure(clickData): selected_Re = clickData['points'][0]
@app.callback
函数完成的,如下所示:
@app.callback(
Output('mesh', 'figure'),
[Input('overview', 'clickData')])
def update_figure(clickData):
selected_Re = clickData['points'][0]['x']
curve_number = clickData['points'][0]['curveNumber']
trace_name = forces_dict.keys()[curve_number]
return {
'data': getMeshTraces(trace_name,selected_Re),
'layout': go.Layout(
title='Mesh study for Re = '+str(selected_Re)+' ('+trace_name+')',
xaxis={'title': 'No. of faces'},
yaxis={'title': selected_force},
hovermode='closest'
)
}
尽管这似乎工作正常,但在启动应用程序时,它会抛出一个类型错误,即'NoneType'对象没有属性'\uu getitem'
。我认为这是因为在开始时没有选择任何点,因此变量clickData
为空。然而,当我试图通过将所有内容def update\u图(clickData)放入if语句中来防止此错误时:
if clickData is not None:
这实际上破坏了功能,应用程序不再工作。或者,我还尝试将所有内容都放在try:
语句中,但结果相同。似乎当应用程序启动时,update\u figure
只被评估一次,然后if
或try
语句的结果被视为静态
如何清理代码,即清除错误消息并保持其当前的功能?我遇到了与您相同的问题,我解决了这个问题:
from dash.exceptions import PreventUpdate
into callback function:
if clickData is None:
raise PreventUpdate
请检查:
您是否介意提供一个?您好@rpanai,谢谢您的回复!不幸的是,我将无法访问该项目,直到下周三。然后我会更新问题。