#python #matplotlib #plotly #plotly-dash
#python #matplotlib #plotly #plotly-dash
Вопрос:
У меня есть таблица, которая выглядит следующим образом…
ticker,price1y,price2y,price3y,price5y,
aapl,12,23,47,69,
tsla,-9,24,54,190,
att,-10,23,34,35,
Я хотел бы построить их с помощью pandas plotly в dash, чтобы показать price1y, price2y … price5y вдоль оси x и % изменить ось y. мне нужно иметь возможность выбирать несколько значений для добавления в график с помощью функции обратного вызова dash.
в настоящее время я создаю график dash_core_components, однако мне не удалось построить график для этого.
app.layout = html.Div([
html.Div([
dcc.Graph(
id='bar-graph'
)
], className='twelve columns')
Спасибо,
Ответ №1:
Вы можете использовать сгруппированную столбчатую диаграмму из plotly:
Выполните импорт:
import plotly.plotly as py
import plotly.graph_objs as go
Пример фрейма данных:
data = {
'ticker': ['aapl', 'tsla', 'att'],
'price1y': [12 ,-9 ,-10],
'price2y': [23 ,24 ,23],
'price3y': [47 ,54 ,34],
'price5y': [69 ,190 ,35]
}
df = pd.DataFrame(data).set_index('ticker')
Выглядит так:
price1y price2y price3y price5y
ticker
aapl 12 23 47 69
tsla -9 24 54 190
att -10 23 34 35
Затем вы можете выполнять итерации по столбцам и динамически создавать данные для сгруппированной столбчатой диаграммы:
res = []
for col in df.columns:
res.append(
go.Bar(
x=df.index.values.tolist(),
y=df[col].values.tolist(),
name=col
)
)
layout = go.Layout(
barmode='group'
)
fig = go.Figure(data=res, layout=layout)
py.iplot(fig, filename='grouped-bar')
Это приведет к:
Чтобы получить это в Dash, вам нужно будет вернуть указанное выше из обратного вызова.