Trama del violino usando Seaborn
La funzione violinplot()
crea un tale grafico e rappresenta la distribuzione come una combinazione tra il grafico della densità del kernel e un boxplot. È molto utilizzato da analitici e statistici per comprendere la distribuzione dei dati categorici. Il suo principale vantaggio rispetto ai tradizionali boxplot è che possono essere utilizzati anche per distribuzioni con picchi multipli.
La figura del violino nella trama può essere un po’ difficile da capire, ma può rappresentare diversi valori statistici. La figura seguente lo spiegherà.
Oltre a DataFrames, la funzione violinplot()
può funzionare con un singolo oggetto serie, un array numpy o un vettore elenco.
Nell’esempio seguente, disegneremo la distribuzione del diagramma del violino di una singola variabile.
import random
import numpy as np
n = random.sample(range(0, 50), 30)
arr = np.array(n)
sns.violinplot(n)
Si noti che la dimensione del campione ha un enorme impatto sulla figura finale nella trama del violino. La trama può essere fuorviante per una piccola dimensione del campione. Se questo è ancora un po’ confuso, si può tracciare un semplice grafico a dispersione sul grafico del violino per ottenere una migliore comprensione.
Per esempio,
import random
import numpy as np
n = random.sample(range(0, 50), 30)
arr = np.array(n)
sns.violinplot(n)
sns.stripplot(n, color="red")
La funzione stripplot()
traccia qui un grafico a dispersione sul grafico del violino. Allo stesso modo, puoi anche tracciare un diagramma a scatola sul diagramma del violino per capire la somiglianza e le differenze tra entrambi.
L’uso principale di violinplot()
risiede nei set di dati, che mostrano distribuzioni di dati con più categorie. Nel codice seguente, lo implementeremo.
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
df = pd.DataFrame(
{
"Quantity": [5, 6, 7, 8, 5, 6, 7, 8, 5, 6, 7, 8, 5, 6, 7, 8],
"Price": [9, 10, 15, 16, 13, 14, 15, 18, 11, 12, 14, 15, 16, 17, 18, 19],
"Day": [1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2],
"Product": [
"A",
"A",
"A",
"A",
"B",
"B",
"B",
"B",
"A",
"A",
"A",
"A",
"B",
"B",
"B",
"B",
],
}
)
sns.violinplot(data=df, y="Price", x="Quantity", hue="Product")
Nota come siamo stati in grado di tracciare in modo efficiente le distribuzioni del prezzo di due prodotti diversi a quantità diverse in due giorni. Notare l’uso del parametro hue
per tracciare due prodotti con colori diversi.
Molti altri argomenti possono essere utilizzati per modificare e modificare la figura finale. Possiamo usare il parametro split
per confrontare facilmente le categorie. Il loro ordine può essere gestito utilizzando il parametro order
. Ogni osservazione può essere mostrata all’interno del grafico utilizzando il parametro inner
.
Nel codice seguente, proviamo a utilizzare alcuni di questi argomenti.
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
df = pd.DataFrame(
{
"Quantity": [5, 6, 7, 8, 5, 6, 7, 8, 5, 6, 7, 8, 5, 6, 7, 8],
"Price": [9, 10, 15, 16, 13, 14, 15, 18, 11, 12, 14, 15, 16, 17, 18, 19],
"Day": [1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2],
"Product": [
"A",
"A",
"A",
"A",
"B",
"B",
"B",
"B",
"A",
"A",
"A",
"A",
"B",
"B",
"B",
"B",
],
}
)
sns.violinplot(
data=df, y="Price", x="Quantity", hue="Product", inner="stick", split=True
)
La funzione violinplot()
restituisce un oggetto di tipo assi matplotlib per utilizzare tutte queste funzioni matplotlib per personalizzare la figura finale. Se vogliamo restituire un oggetto di tipo FacetGrid
, possiamo usare la funzione catplot()
e specificare il parametro kind
come violin
.
Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.
LinkedIn