FacetGrid in Seaborn

Manav Narula 15 febbraio 2024
FacetGrid in Seaborn

Il modulo Seaborn viene utilizzato per la visualizzazione e la creazione di bellissimi grafici statistici in Python. Si basa e utilizza la libreria matlplotlib. A volte, potremmo incontrare una situazione per visualizzare più grafici contemporaneamente, il che darà una migliore chiarezza nella comprensione del set di dati. Per tali situazioni, possiamo usare la classe FacetGrid dal modulo seaborn.

Questo tutorial introdurrà come utilizzare la classe FacetGrid del modulo seaborn in Python.

La classe FacetGrid viene utilizzata per visualizzare la relazione tra la distribuzione dei dati con altri sottoinsiemi di dati creando griglie per più grafici. Traccia il set di dati sulla griglia specificando l’asse di riga e colonna. È utile quando lavoriamo con un set di dati complicato.

Diversi grafici di origine marina come relplot(), lmplot() e catplot() usano questa classe per impostazione predefinita.

Usiamo il costruttore seaborn.FacetGrid() per avviare un oggetto di questa classe. Vedere il seguente codice.

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",
        ],
    }
)

g = sns.FacetGrid(df, col="Product", row="Day")
g.map(sns.lineplot, "Price", "Quantity")

FacetGrid nata dal mare

Nell’esempio sopra, abbiamo tracciato il prezzo per i diversi prodotti in quantità diverse nell’arco di due giorni. Abbiamo creato una griglia utilizzando il costruttore seaborn.FacetGrid() e l’abbiamo inizializzata con il valore per righe e colonne. Specifichiamo il grafico desiderato e le variabili da tracciare utilizzando la funzione map(). Abbiamo utilizzato un set di dati relativamente semplice e siamo stati in grado di ottenere il risultato desiderato. Inoltre, possiamo usare un terzo asse chiamato tonalità in questa classe. Questo traccia i dati con diverse categorie nello stesso grafico in diversi colori.

Modifichiamo il codice nell’esempio citato in precedenza e aggiungiamo il parametro hue. Per esempio,

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",
        ],
    }
)

g = sns.FacetGrid(df, col="Product", hue="Day")
g.map(sns.lineplot, "Price", "Quantity")
g.add_legend()

FacetGrid nata dal mare con il parametro hue

Si noti che anche il numero totale di grafici si è ridotto utilizzando il parametro hue. La funzione add_legend() viene utilizzata per aggiungere una legenda nella figura finale.

Possiamo modificare la figura finale utilizzando molti parametri e funzioni con questa classe. Ad esempio, i parametri height e aspect possono essere utilizzati per modificare le dimensioni della figura finale, la funzione set_titles() può essere utilizzata per aggiungere un titolo da tracciare su ciascun asse, funzione set_xlabels() per modificare le etichette degli assi e altro.

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