Plotly Dash 回调错误更新输出图

Posted

技术标签:

【中文标题】Plotly Dash 回调错误更新输出图【英文标题】:Plotly Dash Callback error updating Output Graph 【发布时间】:2020-02-15 19:03:19 【问题描述】:

我正在尝试使用 Plotly Dash 创建交互式图表。该代码从用户处读取交易品种名称,并从 yahoo Finance 中提取历史数据,并绘制带有滑块的烛台图。当我运行代码时,我在浏览器中收到此错误:

Callback error updating output-graph.children

源码为:

import dash
import dash_core_components as dcc
import dash_html_components as html
from dash.dependencies import Input, Output
import plotly.graph_objs as go
import pandas_datareader.data as web
import pandas as pd
from app import app
import datetime


app = dash.Dash()

app.layout = html.Div(children=[
        html.H1('Interactive Chart'),
        dcc.Input(id='input', value='', type='text'),
        html.Div(id='output-graph')
        ])

@app.callback(
        Output(component_id='output-graph', component_property = 'children'),
        [Input(component_id='input', component_property = 'value')])

def update_graph(input_data):

    start = datetime.datetime(2018, 6, 1)
    end = datetime.datetime.now()
    df = web.DataReader(input_data, 'yahoo', start, end)
    df['year'] = pd.DatetimeIndex(df.index).year
    df['date'] = pd.DatetimeIndex(df.index)

    return dcc.Graph(id='example-graph',figure ='data':[go.Candlestick(x=df['date'],open=df['Open'],high=df['High'],low=df['Low'],close=df['Close'],
                                                                        increasing='line': 'color': 'green',decreasing='line': 'color': 'red')],
                                                'layout':'title': str.upper(input_data), 
                                                          'height': 1000,
                                                          "spikedistance": 200,
                                                          "hoverdistance": 100,
                                                          "xaxis": 
                                                                  "showspikes": 'true',
                                                                  "spikemode": "across",
                                                                  "spikedash": "dash",
                                                                  "spikecolor": "#000000",
                                                                  "spikethickness": 1,
                                                           "yaxis": 
                                                                  "showspikes": 'true',
                                                                  "spikemode": 'across',
                                                                  "spikedash": "dash",
                                                                  "spikecolor": "#000000",
                                                                  "spikethickness": 1
                                                                  )


if __name__ == '__main__':
    app.run_server(debug=True)

我不知道我在回调中哪里出错了。

【问题讨论】:

我知道这是一个有年头的问题,但我使用 Quandl 而不是 Yahoo 进行了测试,它对我有用。使用破折号 1.11 到 1.18 进行测试。我认为 DataReader 发生了错误。如果您单击错误消息,则应该有详细信息。它很可能是 DataReader。仅供参考 pandas_datareader 不再适用于 Yahoo。 【参考方案1】:

试试这个:

return html.Div(dcc.Graph(id='example-graph', figure=dict(data=traces,layout=layout)))

【讨论】:

点评来源: 您好,请不要只用源代码回答。尝试对您的解决方案如何工作提供一个很好的描述。请参阅:How do I write a good answer?。谢谢 html.Div 包装是不必要的。 Op 的代码可以在 DataReader 中进行一些修复

以上是关于Plotly Dash 回调错误更新输出图的主要内容,如果未能解决你的问题,请参考以下文章

回调错误更新 plot-div.children (Plotly Dash)

Plotly Dash dcc.Interval 在一段时间后失败:回调错误更新 graph.figure

Plotly Dash 回调错误:试图隐藏 Div 组件

Plotly Dash 表回调

Plotly:如何使用 DASH 回调将多项式拟合线添加到 plotly go.scatter 图?

Plotly Dash:下拉组件回调可见性错误