Callbacki w Dash

Tworzenie dashboardów z Dash i Plotly

Alex Scriven

Data Scientist

Czym są callbacki?

 

  • Funkcjonalność wyzwalana interakcją
    • Użytkownik wchodzi w interakcję z elementem
      • -> Wywoływana jest funkcja Pythona
        • --> Coś ulega zmianie

$$

$$

$$

  • Dlaczego? Zwiększa interaktywność ✨
Tworzenie dashboardów z Dash i Plotly

Callbacki w Dash

  • Zaczynamy od funkcji dekoratora
    • Używa from dash import Input, Output
  • Output: dokąd przekazać wartość zwracaną przez funkcję
    • component_id: identyfikuje komponent
    • component_property: co zostanie zmienione
  • Input: co wyzwala callback
    • component_property: co użyć w wywołanej funkcji

 

@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
Tworzenie dashboardów z Dash i Plotly

Listy rozwijane w Dash

 

dcc.Dropdown(id='title_dd',
             options=['Title 1', 'Title 2'])
  • Lista wartości
Tworzenie dashboardów z Dash i Plotly

Callback z listą rozwijaną

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
Tworzenie dashboardów z Dash i Plotly

Pierwsza lista rozwijana

Gif przeglądarki Chrome z wykresem słupkowym całkowitej sprzedaży (oś x) i krajów (oś y) oraz listą rozwijaną z opcjami Tytuł 1 i Tytuł 2. Gif pokazuje, jak myszka wybiera kolejne opcje, a tytuł wykresu zmienia się zgodnie z wybraną wartością

Tworzenie dashboardów z Dash i Plotly

Lista rozwijana jako filtr

  • Typowy przypadek – lista rozwijana filtruje DataFrame wykresu
# @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
Tworzenie dashboardów z Dash i Plotly

Filtr w działaniu

 

Gif przeglądarki Chrome z wykresem słupkowym całkowitej sprzedaży (oś x) i krajów (oś y) oraz listą rozwijaną z nazwami krajów. Gif pokazuje, jak myszka wybiera kolejne opcje, a tytuł i dane wykresu zmieniają się do jednego słupka dla wybranego kraju

Tworzenie dashboardów z Dash i Plotly

Czas na ćwiczenia!

Tworzenie dashboardów z Dash i Plotly

Preparing Video For Download...