Utilizzando Seaborn, posso creare grafici a scatole di più colonne di uno pandas DataFrame
sulla stessa figura. Vorrei applicare uno stile personalizzato ai volantini (valori anomali), ad es. impostazione del simbolo del marker, del colore e della dimensione del marker.L'impostazione dello stile del flier (in precedenza) in Seaborn boxplot viene ignorata
The API documentation on seaborn.boxplot, tuttavia, fornisce solo un argomento fliersize
che mi consente di controllare la dimensione dei volantini ma non il colore e il simbolo.
Dal Seaborn utilizza matplotlib per la stampa, ho pensato che avrei potuto fornire un dizionario matplotlib styling per la funzione boxplot
in questo modo:
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
# create a dataframe
df = pd.DataFrame({'column_a': [3, 6, 200, 100, 7], 'column_b': [1, 8, 4, 150, 290], 'column_c': [6, 7, 20, 80, 275]})
# set figure size
sns.set(rc={"figure.figsize": (14, 6)})
# define outlier properties
flierprops = dict(marker='o', markersize=5)
# create boxplot
ax = sns.boxplot(df, vert=False, showmeans=True, flierprops=flierprops)
plt.show()
Risultato:
Secondo il dizionario fornito, vorrei aspettarsi un grande cerchio rosso che rappresenta il volantino di
column_c
ma, invece, le impostazioni standard sono ancora utilizzate.
This thread describes a similar problem quando matplotlib viene utilizzato direttamente, tuttavia, dalla discussione ho indovinato che questo dovrebbe essere risolto nel frattempo quando si utilizzano versioni recenti di matplotlib.
Ho provato questo con un notebook iPython (iPython 3.10), Matplotlib 1.4.3 e Seaborn 0.5.1.
Vogliono solo notare che, mentre 'sns.boxplot' sarà ancora ignorare il parametro' sym', il codice nella tua domanda dovrebbe ora funzionare pienamente incluso l'impostazione del marcatore giusto per i volantini. – mwaskom
Sì, dopo l'aggiornamento al master Seaborn più recente con 'pip install git + git: // github.com/mwaskom/seaborn.git # egg = seaborn', funziona come indicato nella mia domanda sopra. Grazie mille ragazzi! – Dirk