Come ordinare boxplot sull'asse x in seaborn
È possibile utilizzare i seguenti metodi per modificare l’ordine dei boxplot lungo l’asse x in Seaborn:
Metodo 1: ordinamento dei box plot utilizzando l’ordine personalizzato
sns. boxplot (x=' group_var ', y=' values_var ', data=df, order=[' A ',' B ',' C '])
Metodo 2: ordinamento dei box plot utilizzando una metrica
group_means=df. groupby ([' group_var '])[' values_var ']. mean (). sort_values (ascending= True ) sns. boxplot (x=' group_var ', y=' values_var ', data=df, order=group_means. index )
I seguenti esempi mostrano come utilizzare ciascun metodo nella pratica con il seguente DataFrame panda che mostra i punti segnati dai giocatori di basket di tre squadre diverse:
import pandas as pd #createDataFrame df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B', 'C', 'C', 'C', 'C', 'C'], ' points ': [3, 4, 6, 8, 9, 10, 13, 16, 18, 20, 8, 9, 12, 13, 15]}) #view head of DataFrame print ( df.head ()) team points 0 to 3 1 to 4 2 to 6 3 to 8 4 to 9
Esempio 1: ordinare i box plot utilizzando un ordine personalizzato
Il codice seguente mostra come creare un boxplot per visualizzare la distribuzione dei punti per ciascuna squadra e classificare i boxplot nel seguente ordine in base al nome della squadra: C, A, B.
import seaborn as sns
#create boxplots with custom order
sns. boxplot (x=' team ', y=' points ', data=df, order=[' C ', ' A ', ' B '])
Nota che i boxplot sono ordinati lungo l’asse x nell’ordine esatto che abbiamo specificato.
Esempio 2: ordinare i box plot utilizzando una metrica
Il codice seguente mostra come creare un boxplot per visualizzare la distribuzione dei punti per ciascuna squadra e classificare i boxplot in ordine crescente in base alla media dei punti segnati per squadra:
import seaborn as sns
#calculate mean points by team
mean_by_team = df. groupby ([' team '])[' points ']. mean (). sort_values (ascending= True )
#create boxplots ordered by mean points (ascending)
sns. boxplot (x=' team ', y=' points ', data=df, order=mean_by_team. index )
Tieni presente che i boxplot sono ordinati lungo l’asse x in base al valore del punto medio per squadra in ordine crescente.
Per visualizzare i boxplot in ordine decrescente, è sufficiente specificare ascending=False nella funzione sort_values() :
import seaborn as sns
#calculate mean points by team
mean_by_team = df. groupby ([' team '])[' points ']. mean (). sort_values (ascending= False )
#create boxplots ordered by mean points (descending)
sns. boxplot (x=' team ', y=' points ', data=df, order=mean_by_team. index )
I boxplot sono ora ordinati lungo l’asse x in base al valore medio dei punti per squadra in ordine decrescente.
Nota : per ordinare i boxplot in base a una metrica diversa (ad esempio mediana), è sufficiente specificare tale metrica dopo la funzione groupby() nel codice precedente.
Risorse addizionali
I seguenti tutorial spiegano come eseguire altre funzioni comuni in Seaborn:
Come rimuovere i valori anomali da un boxplot Seaborn
Come creare un boxplot a più colonne in Seaborn