Callbacks no Dash

Construindo Dashboards com Dash e Plotly

Alex Scriven

Data Scientist

O que são callbacks?

 

  • Funcionalidade disparada por interação
    • Um usuário interage com um elemento
      • -> Uma função Python é acionada
        • --> Algo é alterado

$$

$$

$$

  • Por quê? Aumenta a interatividade ✨
Construindo Dashboards com Dash e Plotly

Callbacks no Dash

  • Comece com a função decorator
    • Usa from dash import Input, Output
  • Output: para onde enviar o retorno da função
    • component_id: identifica o componente
    • component_property: o que será alterado
  • Input: o que dispara o callback
    • component_property: o que usar na função acionada

 

@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
Construindo Dashboards com Dash e Plotly

Dropdowns no Dash

 

dcc.Dropdown(id='title_dd',
             options=['Title 1', 'Title 2'])
  • Lista de valores
Construindo Dashboards com Dash e Plotly

Um callback de dropdown

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
Construindo Dashboards com Dash e Plotly

Nosso primeiro dropdown

Um gif de um navegador Chrome com um gráfico de barras de vendas totais (eixo x) e país (eixo y) e um dropdown acima com opções Title 1 e Title 2. O gif mostra o mouse selecionando cada opção, e o título do gráfico muda para o valor escolhido no dropdown

Construindo Dashboards com Dash e Plotly

Dropdown como filtro

  • Caso comum: o dropdown filtra o DataFrame do gráfico
# @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
Construindo Dashboards com Dash e Plotly

O filtro em ação

 

Um gif de um navegador Chrome com um gráfico de barras de vendas totais (eixo x) e país (eixo y) e um dropdown acima com opções de nomes de países. O gif mostra o mouse selecionando cada um, e o título do gráfico muda para o valor escolhido no dropdown e filtra o gráfico para uma única barra

Construindo Dashboards com Dash e Plotly

Vamos praticar!

Construindo Dashboards com Dash e Plotly

Preparing Video For Download...