Trama del violino usando Seaborn

Manav Narula 15 febbraio 2024
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à.

informazioni sulla figura del violino

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)

trama del violino in Seaborn

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")

trama del violino in seaborn con una dimensione del campione diversa

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")

trama del violino in seaborn che mostra la distribuzione dei dati

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
)

trama del violino in seaborn con il parametro interno

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.

Autore: Manav Narula
Manav Narula avatar Manav Narula avatar

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