Callback berantai

Membangun Dasbor dengan Dash dan Plotly

Alex Scriven

Data Scientist

Mengapa merantai callback?

 

  • Selama ini callback dapat:
    • Regenerasi plot
    • Ubah HTML/teks

$$

  • Bagaimana jika satu callback memicu callback lain?
    • Use case: dropdown kondisional
Membangun Dasbor dengan Dash dan Plotly

Contoh umum

 

GIF dua dropdown berdampingan. Yang pertama bertuliskan Make, yang kedua Model. Saat mouse memilih Audi di dropdown pertama lalu pindah ke dropdown kedua, terlihat opsi di dropdown kedua terfilter hanya untuk model mobil Audi.

Membangun Dasbor dengan Dash dan Plotly

Input dan output

  • Kuncinya: pahami jalur callback (input dan output)
  • Alat bantu: diagram input-output

$$

  • Alur:
    • Pengguna mengubah value dropdown pertama (INPUT)
    • Callback men-subset dan mengembalikan options dropdown kedua (OUTPUT)
    • Callback kedua bisa terpicu (INPUT) oleh properti value dropdown kedua.

Diagram alur dengan persegi panjang dan panah vertikal. Di antara kotak ada kotak teks kecil. Kotak pertama bertuliskan user, panah ke kotak kedua "Major Category dropdown". Di antaranya ada kotak teks "value". Ada panah ke bawah ke kotak "Minor category dropdown" dengan kotak teks di antaranya bertuliskan Options. Kotak ini terhubung ke kotak terakhir "(Optional) More callbacks" dengan kotak teks di antaranya bertuliskan Options.

Membangun Dasbor dengan Dash dan Plotly

Callback berantai di Dash

 

@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): # Pilih nilai default return chosen_value
Membangun Dasbor dengan Dash dan Plotly

Banyak output

  • Memperbarui beberapa elemen

$$

@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
Membangun Dasbor dengan Dash dan Plotly

Diagram banyak output

Diagram alur yang memperluas diagram sebelumnya. Alih-alih kotak terakhir bertuliskan "(Optional) More callbacks", ada dua panah ke dua kotak di bawahnya, berdampingan. Teksnya "Minor Category Dropdown" dan "HTML Title", keduanya memiliki panah ke kotak opsional di bagian bawah diagram sebelumnya.

Membangun Dasbor dengan Dash dan Plotly

Ayo berlatih!

Membangun Dasbor dengan Dash dan Plotly

Preparing Video For Download...