Callback‑функції в Dash

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

Alex Scriven

Data Scientist

Що таке callback‑функції?

 

  • Функціональність, яку запускає взаємодія
    • Користувач взаємодіє з елементом
      • -> Запускається функція Python
        • --> Щось змінюється

$$

$$

$$

  • Навіщо? Більша інтерактивність ✨
Створення дашбордів з Dash і Plotly

Callback‑функції в Dash

  • Починайте з функції декоратора
    • Використовує from dash import Input, Output
  • Output: куди надіслати результат функції
    • component_id: ідентифікатор компонента
    • component_property: що буде змінено
  • Input: що запускає callback
    • component_property: що використати у викликаній функції

 

@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
Створення дашбордів з Dash і Plotly

Випадні списки в Dash

 

dcc.Dropdown(id='title_dd',
             options=['Title 1', 'Title 2'])
  • Список значень
Створення дашбордів з Dash і Plotly

Callback для випадаючого списку

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
Створення дашбордів з Dash і Plotly

Перший випадний список

GIF із браузером Chrome: стовпчикова діаграма загальних продажів (вісь x) і країн (вісь y) з випадним списком зверху з опціями Title 1 і Title 2. На GIF курсор обирає кожну опцію, і заголовок графіка змінюється на відповідне значення зі списку

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

Випадний список як фільтр

  • Типовий випадок: випадний список фільтрує датафрейм для графіка
# @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
Створення дашбордів з Dash і Plotly

Фільтр у дії

 

GIF із браузером Chrome: стовпчикова діаграма загальних продажів (вісь x) і країн (вісь y) з випадним списком зверху з назвами країн. На GIF курсор обирає різні країни, і заголовок змінюється на вибране значення, а графік фільтрується до одного стовпчика

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

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

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

Preparing Video For Download...