from dash import dcc, html from dash.dependencies import Input, Output import plotly.express as px import dataiku # READ DATASET dataset = dataiku.Dataset("Orders_by_Country_sorted") df = dataset.get_dataframe() df = df[df['campaign']] # Create the layout of the app app.layout = html.Div([ html.Div([ html.H1("Total Sales by Country", style={'backgroundColor': '#5473FF', 'color': '#FFFFFF', 'width': '98vw', 'margin': 'auto', 'textAlign': 'center'}), html.P("This graph allows you to compare the total sales amount and campaign influence by country.", style={'textAlign': 'center'}), dcc.Dropdown( id='country-select', options=[{'label': country, 'value': country} for country in sorted(df['country'].unique())], value=['United States', 'China', 'Japan', 'Germany', 'France', 'United Kingdom'], multi=True, style={'width': '50%', 'margin': 'auto'} ), dcc.Graph(id='sales-graph') ]) ]) # Define the callback to update the graph @app.callback( Output('sales-graph', 'figure'), [Input('country-select', 'value')] ) def update_figure(selected_countries): """ Update the bar chart whenever the user selects one country. Args: selected_countries: all selected countries Returns: the new bar chart """ filtered_df = df[df['country'].isin(selected_countries)] fig = px.bar(filtered_df, x='country', y='total_amount', title='Total amount per campaign') fig.update_layout(xaxis_title='Country', yaxis_title='Total Amount') return fig