Execuse me, I created my first chart with these dropdowns. Now, I’d like to add another chart in the same page with the same dropdowns. here is the code I wrote
import dash
import dash_html_components as html
import dash_core_components as dcc
import plotly.graph_objs as go
import pandas as pd
from dash.dependencies import Input, Output
df = pd.read_csv('redcap.csv')
app = dash.Dash()
app.config['suppress_callback_exceptions'] = True
year_options = []
for year in df['year'].unique():
year_options.append({'label': str(year), 'value': year})
unit_options = []
for unit in df['unit'].unique():
unit_options.append({'label': str(unit), 'value': unit})
app.layout = html.Div([
html.Div([
dcc.Dropdown(id='year_picker', options=year_options,
value=df['year'].min())
],
style={'width': '48%', 'display': 'inline-block'}),
html.Div([
dcc.Dropdown(id='unit_picker', options=unit_options,
value=df['unit'])
],
style={'width': '48%', 'float': 'right', 'display': 'inline-block'}),
dcc.Graph(id='nursing titles')
], style={'padding': 10})
@app.callback(Output('nursing titles', 'figure'),
[Input('year_picker', 'value'),
Input('unit_picker', 'value')])
def titles(year, unit):
dff = df[(df['year'] == year) & (df['unit'] == unit)]
count = dff['title'].value_counts().reset_index()
labels = count['index'].astype(str).tolist()
values = count['title'].tolist()
data = go.Pie(labels=labels,
values=values,
textinfo='value+percent',
textposition='inside',
direction='clockwise',
sort=False)
layout = go.Layout(title='Post Distribution {}'.format(year))
fig = go.Figure(data=data, layout=layout)
return fig
app.layout = html.Div([
dcc.Graph(id='nursing gender')
], style={'padding': 10})
@app.callback(Output('nursing gender', 'figure'),
[Input('year_picker', 'value'),
Input('unit_picker', 'value')])
def gender(year, unit):
dfff = df[(df['year'] == year) & (df['unit'] == unit)]
count = dfff['gender'].value_counts().reset_index()
labels = count['index'].astype(str).tolist()
values = count['gender'].tolist()
data = go.Pie(labels=labels,
values=values,
textinfo='value+percent',
textposition='inside',
direction='clockwise',
sort=False)
layout = go.Layout(title='Gender Distribution {}'.format(year))
fig = go.Figure(data=data, layout=layout)
return fig
if __name__ == '__main__':
app.run_server()
and here is a screenshot that may help imagine