Ланцюжкові колбеки

Створення дашбордів з Dash і Plotly

Alex Scriven

Data Scientist

Навіщо ланцюжити колбеки?

 

  • Досі колбеки спричиняли:
    • Перегенерацію графіків
    • Зміну HTML / тексту

$$

  • А як щодо колбека, що запускає інший?
    • Приклад: умовний випливний список
Створення дашбордів з Dash і Plotly

Типовий приклад

 

GIF із двома випливними списками поруч. Перший має заповнювач Make, другий — Model. Коли миша обирає Audi в першому списку й переходить до другого, видно, що варіанти другого відфільтровано до моделей саме для Audi

Створення дашбордів з Dash і Plotly

Входи та виходи

  • Суть: зважайте на шляхи колбеків (входи й виходи)
  • Корисний інструмент: діаграма «вхід–вихід»

$$

  • Послідовність:
    • Користувач змінює value першого списку (INPUT)
    • Колбек формує підмножину й повертає options другого списку (OUTPUT)
    • Другий колбек може спрацювати (INPUT) від value другого списку.

Схема з прямокутниками та стрілками вертикально. Між блоками — малі текстові блоки. Перший блок «user», стрілка до «Major Category dropdown». Між ними текст «value». Далі стрілка до «Minor category dropdown». Між ними «Options». Цей блок стрілкою веде до фінального «(Optional) More callbacks», між ними текст «Options»

Створення дашбордів з Dash і Plotly

Ланцюжкові колбеки в 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): # Pick a default value return chosen_value
Створення дашбордів з Dash і Plotly

Кілька виходів

  • Оновлення кількох елементів

$$

@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 і Plotly

Діаграма з кількома виходами

Розширена блок-схема, що продовжує попередню. Замість фінального блоку «(Optional) More callbacks» тепер дві стрілки ведуть до двох паралельних блоків «Minor Category Dropdown» і «HTML Title», від яких ідуть стрілки до опційного нижнього блоку.

Створення дашбордів з Dash і Plotly

Давайте потренуємось!

Створення дашбордів з Dash і Plotly

Preparing Video For Download...