Verkettete Callbacks

Dashboards mit Dash und Plotly erstellen

Alex Scriven

Data Scientist

Warum Callbacks verketten?

 

  • Bisher bewirken Callbacks:
    • Diagramme neu zeichnen
    • HTML/Text ändern

$$

  • Was ist mit einem Callback, der einen anderen auslöst?
    • Use Case: bedingte Dropdowns
Dashboards mit Dash und Plotly erstellen

Ein häufiges Beispiel

 

Ein GIF mit zwei Dropdowns nebeneinander. Das erste hat den Platzhalter „Make", das zweite „Model". Wenn die Maus im ersten Dropdown Audi auswählt und dann zum zweiten wechselt, ist klar, dass die Optionen im zweiten Dropdown auf Audi-Modelle gefiltert wurden.

Dashboards mit Dash und Plotly erstellen

Inputs und Outputs

  • Der Trick: die Callback-Pfade (Inputs und Outputs) kennen
  • Nützliches Tool: ein Input-Output-Diagramm

$$

  • Ablauf:
    • Nutzer ändert value des ersten Dropdowns (INPUT)
    • Ein Callback filtert und liefert options des zweiten Dropdowns (OUTPUT)
    • Ein zweiter Callback kann durch die value-Eigenschaft des zweiten Dropdowns (INPUT) ausgelöst werden.

Ein Flussdiagramm mit Rechtecken und Pfeilen, die Boxen vertikal verbinden. Zwischen den Boxen sind kleine Textfelder. Die erste Box hat „user", Pfeil zur zweiten Box „Major Category dropdown". Dazwischen ein kleines Textfeld „value". Ein Pfeil führt zur Box „Minor category dropdown". Das Textfeld dazwischen sagt Options. Diese Box verbindet sich per Pfeil zur nächsten und letzten Box unten mit „(Optional) More callbacks", dazwischen ein Textfeld „Options".

Dashboards mit Dash und Plotly erstellen

Verkettete Callbacks in Dash

 

@callback(
  Output('minor_cat_dd', 'options'),
  Input('major_cat_dd', 'value'))

def update_major_cat(major_cat_dd): # Optionen filtern (Liste von Dicts) return minor_options

 

@callback(
  Output('minor_cat_dd', 'value'),
  Input('minor_cat_dd', 'options'))

def update_minor_cat(minor_cat_options): # Standardwert wählen return chosen_value
Dashboards mit Dash und Plotly erstellen

Mehrere Outputs

  • Mehrere Elemente aktualisieren

$$

@callback(
  Output('my_title', 'children'),
  Output('minor_cat_dd', 'value'),
  Input('minor_cat_dd', 'options')
)
def some_function(input):
  # function body
  return title_value, dropdown_value
Dashboards mit Dash und Plotly erstellen

Diagramm: mehrere Outputs

Ein erweitertes Flussdiagramm des vorherigen. Statt der letzten Box „(Optional) More callbacks" führen zwei Pfeile zu zwei Boxen nebeneinander: „Minor Category Dropdown" und „HTML Title". Beide zeigen per Pfeil auf die optionale Box unten aus dem letzten Diagramm.

Dashboards mit Dash und Plotly erstellen

Lass uns üben!

Dashboards mit Dash und Plotly erstellen

Preparing Video For Download...