Trama dello sciame di Seaborn

Manav Narula 16 luglio 2021
Trama dello sciame di Seaborn

Un grafico a dispersione è uno dei grafici più semplici e utili utilizzati. Il modulo Seaborn in Python può fare un passo avanti con questi grafici e usarli per rappresentare valori categoriali.

Un grafico a sciame è un tipo di grafico a dispersione utilizzato per rappresentare i valori categoriali. È molto simile al grafico a strisce, ma evita la sovrapposizione dei punti. Possiamo usare seaborn.swarmplot() per creare tali grafici.

Non è consigliabile utilizzare questo tipo di grafico quando la dimensione del campione è grande.

Useremo la funzione swarmplot() per creare un tale grafico per i valori categoriali nel codice seguente.

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.swarmplot(data=df, y="Price", x="Quantity")

trama sciame nata dal mare per i dati categorici

Nell’esempio sopra, possiamo aggiungere il parametro hue alla funzione swarmplot() e separare le categorie per i due diversi prodotti. Possiamo dividere i due prodotti usando l’argomento dodge e impostandolo su True.

Inoltre, possiamo usare altri argomenti anche con la funzione swarmplot(). La dimensione e il colore dei punti possono essere modificati utilizzando gli argomenti size e color. Possiamo modificare la combinazione di colori utilizzata per diverse categorie utilizzando il parametro palette. L’argomento linewidth aggiunge un bordo ai punti della larghezza specificata. L’ordine delle categorie tracciate può essere controllato utilizzando il parametro order.

Cercheremo di utilizzare gli argomenti di cui sopra nell’esempio seguente.

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.swarmplot(
    data=df,
    y="Price",
    x="Quantity",
    hue="Product",
    dodge=True,
    linewidth=2.5,
    palette="Set2",
    size=10,
)

trama sciame nata dal mare con tonalità e altri argomenti

Lo swarmplot() può anche essere usato come un buon complimento su una trama di scatole o violini. Dà una buona idea della distribuzione dei dati.

Possiamo aggiungere un box plot sopra lo swarm plot usando il seguente codice.

import random
import numpy as np
import seaborn as sns

n = random.sample(range(0, 50), 30)
arr = np.array(n)
sns.boxplot(n)
sns.swarmplot(n, color="red")

box plot Seaborn su swarmplot

La funzione catplot() può anche creare un tale swarm plot. Per questo, dobbiamo specificare il valore per il parametro kind nella funzione catplot() come swarm.

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