Я пытаюсь построить более одной строки, когда пользователь выбирает больше элементов в раскрывающемся списке, но это не очень хорошо, я не могу понять, что я делаю не так. Я думаю, что возникают проблемы, когда я добавляю данные для построения рисунка. Если я рисую только одну акцию, диаграмма работает хорошо, но когда я добавляю еще одну акцию, она терпит неудачу.
введите описание изображения здесь
Кто-нибудь может мне помочь?
import dash
import dash_html_components as html
import dash_core_components as dcc
import plotly.graph_objects as go
import pandas as pd
from dash.dependencies import Input, Output
import yfinance as yf
import pandas as pd
# Initialize the app
app = dash.Dash(__name__)
#app.config.suppress_callback_exceptions = True
app.layout = html.Div(
children=[
html.Div(className='row',
children=[
html.Div(className='four columns div-user-controls',
children=[
html.H2('DASH - STOCK PRICES'),
html.P('Visualising time series with Plotly - Dash.'),
html.P('Pick one or more stocks from the dropdown below.'),
html.Div(
className='div-for-dropdown',
children=[
dcc.Dropdown(id='stockselector', options=[{'label': 'AAPL', 'value': 'AAPL'},
{'label': 'MSFT', 'value': 'MSFT'},
{'label': 'MELI', 'value': 'MELI'}],
multi=True, value='',
style={'backgroundColor': '#1E1E1E'},
className='stockselector'
),
],
style={'color': '#1E1E1E'})
]
),
html.Div(className='eight columns div-for-charts bg-grey',
children=[
dcc.Graph(id='timeseries', config={'displayModeBar': False}, animate=False)
])
])
]
)
# Callback for timeseries price
@app.callback(Output('timeseries', 'figure'),
[Input('stockselector', 'value')])
def update_graph(input_data):
global trace1
#df.drop(df.index, inplace=True)
df = yf.download(input_data, start="2019-01-01", end="2019-04-30")['Adj Close']
#df = pd.DataFrame()
trace1 = []
#for stock in input_data:
trace = go.Scatter(x=df.index.tolist(),
y=df.values.tolist(),
mode='lines',
opacity=0.7,
name='asd',
textposition='bottom center')
trace1.append(trace)
#traces = [trace1]
#data = [val for sublist in traces for val in sublist]
figure = {'data': trace1,
'layout': go.Layout(
colorway=["#5E0DAC", '#FF4F00', '#375CB1', '#FF7400', '#FFF400', '#FF0056'],
template='plotly_dark',
paper_bgcolor='rgba(0, 0, 0, 0)',
plot_bgcolor='rgba(0, 0, 0, 0)',
title={'text': 'Stock Prices', 'font': {'color': 'white'}, 'x': 0.5},
),
}
df.drop(df.index, inplace=True)
return figure
if __name__ == '__main__':
app.run_server(debug=False)´