Проблема в том, что переменная plotly_fig
даже не объявляется, когда вы пытаетесь использовать ее в поле figure
Графика.Он просто объявляется локально в обратном вызове.
Не требуется явно устанавливать свойство figure
для Graph, оно будет автоматически отображаться во время обратного вызова, так что вы можете сделать это напрямую,
#your code here
app = dash.Dash()
#begin with the knobs
app.layout = html.Div([
dcc.Graph(
id = 'graph'), # ==> here you can remove the figure as it will be automatically set during the callback.
#your code here
],
style = {'columnCount': 1})
@app.callback(
dash.dependencies.Output('graph', 'figure'), #here figure represents the field
[dash.dependencies.Input('l', 'value'),
dash.dependencies.Input('n', 'value'),
dash.dependencies.Input('N', 'value'),
dash.dependencies.Input('r', 'value'),
dash.dependencies.Input('d', 'value')])
def output(L,n,N,r,d):
#your code here
plotly_fig = tls.mpl_to_plotly(mpl_fig)
return{plotly_fig}
if __name__=='__main__':
app.run_server(debug = True)
В приведенном выше примере фрагмента свойство value
ползунка является входом приложения, а выход приложения - свойством figure
графика.Всякий раз, когда значение Slider изменяется, Dash вызывает функцию обратного вызова output
с новыми входными значениями.Функция фильтрует информационный фрейм с этим новым значением, создает объект рисунка и возвращает его в приложение Dash.
Между тем, если вы хотите, чтобы значение по умолчанию было установлено еще до вызова функции обратного вызова, вы можете объявитьplotly_fig
как глобальная переменная, подобная этой,
#your code here
plotly_fig = None # declare the default figure here
app = dash.Dash()
#begin with the knobs
app.layout = html.Div([
dcc.Graph(
id = 'graph', figure = plotly_fig),
#your code here
],
style = {'columnCount': 1})
@app.callback(
dash.dependencies.Output('graph', 'figure'),
[dash.dependencies.Input('l', 'value'),
dash.dependencies.Input('n', 'value'),
dash.dependencies.Input('N', 'value'),
dash.dependencies.Input('r', 'value'),
dash.dependencies.Input('d', 'value')])
def output(L,n,N,r,d):
#your code here
plotly_fig = tls.mpl_to_plotly(mpl_fig)
return{plotly_fig}
if __name__=='__main__':
app.run_server(debug = True)
Для получения дополнительной информации обратитесь к официальной странице документации, которая имеет подобный пример,
https://dash.plot.ly/getting-started-part-2