尝试在 Plotly Dash 中生成图表时出错

Emi*_*lov 4 python plotly plotly-dash

当尝试使用以下代码生成图形时

@app.callback(
    [
        Output("selected-plot", "figure")
    ],
    [
        Input("submit-selected-plotting", "n_clicks"),
        State("table", "data")
    ],
)
def plot(button_clicked, data)           
    fig = go.Scatter(x=data["index"],
                     y=data["result"],
                     mode='lines',
                     name='result')
    return fig
Run Code Online (Sandbox Code Playgroud)

            dbc.Col(
                [
                    dcc.Graph(id='selected-plot')
                ],
                width=6,
            )
Run Code Online (Sandbox Code Playgroud)

我收到一个奇怪的错误,应用程序期待不同的对象:

dash._grouping.SchemaTypeValidationError:架构:[<Output selected-plots.figure>] 路径:() 预期类型:(<class 'tuple'>,<class 'list'>) 收到类型 <class 'plotly.graph_objs._scatter.Scatter' 的值>: 分散({...})

我已经尝试了一切,但似乎无法解决这个错误。感谢您提前提出任何建议!

Fla*_*ino 12

该错误是由于应用程序需要一个图形对象,您可以通过更新回调来修复它,如下所示:

@app.callback(
    [
        Output("selected-plot", "figure")
    ],
    [
        Input("submit-selected-plotting", "n_clicks"),
        State("table", "data")
    ],
)
def plot(button_clicked, data)     
      
    trace = go.Scatter(
        x=data["index"],
        y=data["result"],
        mode='lines',
        name='result'
    )

    return [go.Figure(data=trace)]
Run Code Online (Sandbox Code Playgroud)

  • 这是因为 `Output("selected-plot", "figure")` 括在方括号中,如果删除它们,那么我之前的答案将起作用。 (7认同)