【发布时间】: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。
标签: python-3.x plotly plotly-dash plotly-python