Передача объекта Figure в Graph в графическом виде - PullRequest
2 голосов
/ 04 августа 2020

Когда я пытаюсь передать объект Figure в dcc.Graph() в моем макете, я получаю сообщение об ошибке:

dash.exceptions.InvalidCallbackReturnValue: The callback ..graph.figure.. is a multi-output.
    Expected the output type to be a list or tuple but got: 
    Figure({# the content of the figure})

мой код похож на:

import dash
import dash_core_components as dcc
import dash_html_components as html
from dash.dependencies import Input, Output
import plotly.express as px

app.layout = html.Div([
    dcc.Graph(
        id='graph'
    )
])

@app.callback(
    [
        Output('graph', 'figure'),
    ],
    [
        Input('my-input', 'value')
    ]
)
def gen_graph(value):
    dff = # my filtered df
    fig = px.line(dff, x='x_var', y='y_var')
    return fig

Похоже, мне что-то не хватает в том, как Figure должен быть передан в dcc.Graph(). Есть идеи?

1 Ответ

1 голос
/ 04 августа 2020

Вы структурировали свой Output в виде списка, что делает его обратным вызовом с несколькими выходами. Просто измените его следующим образом:

@app.callback(
    Output('graph', 'figure'),
    [
        Input('my-input', 'value')
    ]
)
def gen_graph(value):
    ...

В качестве альтернативы вы можете заключить вывод в квадратные скобки, чтобы превратить его в список (return [fig]). В любом случае все должно работать нормально.

...