Callback di Dash

Membangun Dasbor dengan Dash dan Plotly

Alex Scriven

Data Scientist

Apa itu callback?

 

  • Fungsionalitas dipicu oleh interaksi
    • Pengguna berinteraksi dengan elemen
      • -> Fungsi Python dipanggil
        • --> Sesuatu berubah

$$

$$

$$

  • Mengapa? Meningkatkan interaktivitas ✨
Membangun Dasbor dengan Dash dan Plotly

Callback di Dash

  • Mulai dengan fungsi decorator
    • Gunakan from dash import Input, Output
  • Output: ke mana nilai kembalian dikirim
    • component_id: identitas komponen
    • component_property: apa yang diubah
  • Input: apa yang memicu callback
    • component_property: apa yang dipakai dalam fungsi pemicu

 

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

Dropdown di Dash

 

dcc.Dropdown(id='title_dd',
             options=['Title 1', 'Title 2'])
  • Daftar nilai
Membangun Dasbor dengan Dash dan Plotly

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

Dropdown pertama kita

GIF browser Chrome dengan bagan batang Total Sales (sumbu x) dan Country (sumbu y) serta dropdown di atasnya berisi opsi Title 1 dan Title 2. GIF menampilkan klik pada masing-masing opsi, dan judul grafik berubah sesuai nilai dropdown

Membangun Dasbor dengan Dash dan Plotly

Dropdown sebagai filter

  • Kasus umum: dropdown memfilter DataFrame plot
# @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
Membangun Dasbor dengan Dash dan Plotly

Filter dalam aksi

 

GIF browser Chrome dengan bagan batang Total Sales (sumbu x) dan Country (sumbu y) serta dropdown berisi nama negara. GIF menampilkan pemilihan tiap negara; judul grafik berubah sesuai nilai dropdown dan grafik terfilter menjadi satu batang

Membangun Dasbor dengan Dash dan Plotly

Ayo berlatih!

Membangun Dasbor dengan Dash dan Plotly

Preparing Video For Download...