Zincirlenmiş geri çağrılar

Dash ve Plotly ile Paneller Oluşturma

Alex Scriven

Data Scientist

Neden geri çağrıları zincirleyelim?

 

  • Şimdiye kadar geri çağrılar şunları yapar:
    • Grafikleri yeniden üretir
    • HTML / metni değiştirir

$$

  • Peki bir geri çağrı başka birini tetiklerse?
    • Kullanım durumu: koşullu açılır menü
Dash ve Plotly ile Paneller Oluşturma

Yaygın bir örnek

 

Yan yana iki açılır menü GIF'i. İlkinde yer tutucu metin Make, ikincisinde Model. Fare ilk açılır menüden Audi'yi seçip ikincisine geçtiğinde, ikinci açılır menüdeki seçeneklerin yalnızca Audi modelleriyle filtrelendiği görülür.

Dash ve Plotly ile Paneller Oluşturma

Girdiler ve çıktılar

  • Püf noktası: geri çağrı yollarını (girdiler ve çıktılar) bilmek
  • Yardımcı araç: bir girdi-çıktı diyagramı

$$

  • Akış:
    • Kullanıcı ilk açılır menünün value değerini değiştirir (GİRDİ)
    • Bir geri çağrı ikinci açılır menünün options listesini alt kümeleyip döndürür (ÇIKTI)
    • İkinci açılır menünün value özelliği tarafından ikinci bir geri çağrı tetiklenebilir (GİRDİ).

Dikey bağlanan dikdörtgenler ve oklarla bir akış şeması. Kutular arasında küçük metin kutuları var. İlk kutuda kullanıcı yazıyor; "Ana Kategori açılır menüsü" yazan ikinci kutuya bir ok var. Aradaki küçük kutuda "value" yazıyor. Buradan "Alt kategori açılır menüsü" yazan kutuya bir ok gidiyor. Aradaki metin kutusunda Options yazıyor. Bu kutudan, arada Options yazan bir metin kutusuyla, aşağıdaki son kutuya "(İsteğe bağlı) Daha fazla geri çağrı" okla bağlanıyor.

Dash ve Plotly ile Paneller Oluşturma

Dash'te zincirlenmiş geri çağrılar

 

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

def update_major_cat(major_cat_dd): # Filter options (list of dicts) return minor_options

 

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

def update_minor_cat(minor_cat_options): # Pick a default value return chosen_value
Dash ve Plotly ile Paneller Oluşturma

Birden çok çıktı

  • Birden çok öğeyi güncelleme

$$

@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
Dash ve Plotly ile Paneller Oluşturma

Birden çok çıktı diyagramı

Önceki diyagramın genişletilmiş bir akış şeması. Sondaki kutu "(İsteğe bağlı) Daha fazla geri çağrı" yerine, yana iki kutuya giden iki ok var. Kutularda yan yana "Alt Kategori Açılır Menü" ve "HTML Başlık" yazıyor; her ikisinden de önceki diyagramın altındaki isteğe bağlı kutuya birer ok gidiyor.

Dash ve Plotly ile Paneller Oluşturma

Hadi pratik yapalım!

Dash ve Plotly ile Paneller Oluşturma

Preparing Video For Download...