Come creare un menu a discesa in Plotly
Immaginiamo di avere un set di dati con molte informazioni organizzate in diverse colonne, che desideri visualizzare. Inoltre, il contenuto stesso può essere mostrato con lo stesso tipo di grafico, ad esempio un grafico a barre oa linee, ma non ha senso visualizzarlo subito. Ovviamente, potresti creare diverse sottotrame e visualizzarle una sotto l'altra. Ma questo potrebbe sfuggire di mano se hai troppe categorie da visualizzare. Fortunatamente, esiste una soluzione semplice per questo creando un menu a discesa in Plotly. Quindi diamo un'occhiata a come farlo.
Raschiare i dati
Per prima cosa, dobbiamo ottenere i dati. In questo esempio, estrarremo le statistiche NBA per i singoli giocatori da www.basketball-reference.com . Per semplificare le cose, ci concentreremo solo sui primi dieci giocatori in termini di punti, rimbalzi e assist a partita:
# Scraping individual stats from www.basketball-reference.com
df = pd.read_html('https://www.basketball-reference.com/leagues/NBA_2023_per_game.html')[0]
# Filtering out irrelevant entries
df = df[df['Player'] != 'Player']
# Converting columns into numeric type if possible
for col in df.columns:
try:
df[col] = pd.to_numeric(df[col])
except:
pass
# Filtering and sorting for categories of interest
df_pts = df[['Player', 'PTS']].sort_values('PTS', ascending=False)[:10]
df_trb = df[['Player', 'TRB']].sort_values('TRB', ascending=False)[:10]
df_ast = df[['Player', 'AST']].sort_values('AST', ascending=False)[:10]
Image: df_pts, df_trb, df_ast
Nel passaggio successivo, creeremo un oggetto figura, che contiene tre grafici a barre. Ogni grafico a barre rappresenta una categoria diversa (punti, rimbalzi, assist), che abbiamo distinto creando i tre dataframe nel passaggio precedente. Si noti che è importante impostare il parametro visibile solo per il primo grafico a barre su True e per gli altri su false :
# Initializing figure object
fig = go.Figure()
# Adding points bar plot
fig.add_trace(
go.Bar(
y=list(df_pts['Player']),
x=list(df_pts['PTS']),
name='Points',
orientation='h'
)
)
# Adding rebounds bar plot
fig.add_trace(
go.Bar(
y=list(df_trb['Player']),
x=list(df_trb['TRB']),
name='Rebounds',
visible=False,
orientation='h'
)
)
# Adding assists bar plot
fig.add_trace(
go.Bar(
y=list(df_ast['Player']),
x=list(df_ast['AST']),
name='Assists',
visible=False,
orientation='h'
)
)
# Minor layout adjustments
fig.update_layout(title='<b>Top 10 Leaders</b>',
title_x=0.5,
margin=dict(t=50),
yaxis=dict(autorange="reversed", ticksuffix=" ")
)
fig.show()
Image: points bar plot
Ora aggiungiamo il menu a tendina all'oggetto figure con il metodo update_layout . All'interno del parametro updatemenus dobbiamo passare un elenco di dizionari per il parametro buttons . Ogni dizionario specifica quanto segue:
- etichetta: nome che appare sul pulsante → es. Punti
- metodo: azione da intraprendere su un clic → aggiornamento
- args: elenco con un dizionario che definisce i grafici visibili dopo un clic sulla rispettiva etichetta → [True, False, False] per mostrare solo il primo grafico a barre che è stato aggiunto dal metodo add_trace nel passaggio precedente
fig.update_layout(
updatemenus=[
dict(
xanchor='left',
x=-0.15,
yanchor='top',
y=1.1,
active=0,
buttons=list([
dict(label="Points",
method="update",
args=[{"visible": [True, False, False]}]
),
dict(label="Rebounds",
method="update",
args=[{"visible": [False, True, False]}]
),
dict(label="Assists",
method="update",
args=[{"visible": [False, False, True]}]
)
]),
)
])
fig.show()
Image: bar plot with dropdown menu
In questo articolo, ho spiegato come creare un menu a discesa in Plotly per visualizzare più categorie presenti in diverse colonne di un dataframe. Ciò è particolarmente utile se si dispone di molte categorie da visualizzare, ma non si desidera creare un singolo grafico per ognuna. Spero di esserti stato utile e grazie per aver letto!
articoli Correlati
Se ti è piaciuto questo articolo, potrebbero interessarti anche i seguenti:
Codifica di livello superiore
Grazie per far parte della nostra comunità! Prima che tu vada:
- Batti le mani per la storia e segui l'autore
- Visualizza altri contenuti nella pubblicazione Level Up Coding
- Corso di colloquio di codifica gratuito ⇒ Visualizza il corso
- Seguici: Twitter | Linkedin | Notiziario

![Che cos'è un elenco collegato, comunque? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































