Колбэки в Dash

Создание дашбордов с помощью Dash и Plotly

Alex Scriven

Data Scientist

Что такое колбэки?

 

  • Функциональность, вызываемая взаимодействием
    • Пользователь взаимодействует с элементом
      • -> Запускается функция Python
        • --> Что-то изменяется

$$

$$

$$

  • Зачем? Повышает интерактивность ✨
Создание дашбордов с помощью Dash и Plotly

Колбэки в Dash

  • Начните с функции-декоратора
    • Используется from dash import Input, Output
  • Output: куда передать возвращаемое значение
    • component_id: идентификатор компонента
    • component_property: что будет изменено
  • Input: что запускает колбэк
    • 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

Колбэк с выпадающим списком

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». При выборе значения заголовок графика меняется соответственно

Создание дашбордов с помощью Dash и Plotly

Выпадающий список как фильтр

  • Типичный сценарий — выпадающий список фильтрует DataFrame графика
# @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) с выпадающим списком названий стран. При выборе страны заголовок графика меняется, а диаграмма фильтруется до одного столбца

Создание дашбордов с помощью Dash и Plotly

Давайте потренируемся!

Создание дашбордов с помощью Dash и Plotly

Preparing Video For Download...