Callbacks i Dash

Bygg dashboards med Dash och Plotly

Alex Scriven

Data Scientist

Vad är callbacks?

 

  • Funktionalitet som triggas av interaktion
    • En användare interagerar med ett element
      • -> En Python-funktion triggas
        • --> Något förändras

$$

$$

$$

  • Varför? Förbättrar interaktiviteten ✨
Bygg dashboards med Dash och Plotly

Callbacks i Dash

  • Börja med decorator-funktionen
    • Använder from dash import Input, Output
  • Output: Vart funktionens returvärde skickas
    • component_id: Identifierar komponenten
    • component_property: Vad som förändras
  • Input: Vad som triggar callback:en
    • component_property: Vad som används i den triggade funktionen

 

@callback(

Output(component_id='my_plot', component_property='figure'),
Input(component_id='my_input', component_property='value')
)
def some_function(data): # Subset Data # Recreate Figure return fig
Bygg dashboards med Dash och Plotly

Dropdown-menyer i Dash

 

dcc.Dropdown(id='title_dd',
             options=['Title 1', 'Title 2'])
  • Lista med värden
Bygg dashboards med Dash och Plotly

En callback med dropdown

app.layout =[

dcc.Dropdown(id='title_dd', options=['Title 1', 'Title 2']),
dcc.Graph(id='my_graph')])
@callback( Output(component_id='my_graph', component_property='figure'),
Input(component_id='title_dd', component_property='value') )
# @callback()
def update_plot(selection):
    title = "None Selected"
    if selection:
        title = selection

bar_fig = px.bar( data_frame=ecom_sales, title=f'{title}', x='Total Sales ($)', y='Country')
return bar_fig
Bygg dashboards med Dash och Plotly

Vår första dropdown

En gif av en webbläsare som visar ett stapeldiagram med total försäljning (x-axel) och land (y-axel) samt en dropdown-meny med alternativen Title 1 och Title 2. I gif:en väljer muspekaren varje alternativ och diagrammets titel ändras till det valda värdet

Bygg dashboards med Dash och Plotly

Dropdown som filter

  • Vanligt användningsfall – dropdown filtrerar diagrammets DataFrame
# @callback()
def update_plot(input_country):
    country = 'All Countries'

sales = ecom_sales.copy(deep=True)
if input_country: country = input_country sales = sales[sales['Country'] == country]
bar_fig = px.bar( data_frame=sales, title=f"Sales in {country}", x='Total Sales ($)', y='Country') return bar_fig
Bygg dashboards med Dash och Plotly

Filtret i praktiken

 

En gif av en webbläsare som visar ett stapeldiagram med total försäljning (x-axel) och land (y-axel) samt en dropdown-meny med landnamn som alternativ. I gif:en väljer muspekaren varje alternativ, diagrammets titel ändras till det valda värdet och diagrammet filtreras till ett enda stapel

Bygg dashboards med Dash och Plotly

Nu kör vi en övning!

Bygg dashboards med Dash och Plotly

Preparing Video For Download...