FacetGrid à Seaborn

Manav Narula 15 février 2024
FacetGrid à Seaborn

Le module Seaborn est utilisé pour la visualisation et la création de beaux graphiques statistiques en Python. Il est basé sur et utilise la bibliothèque matlplotlib. Parfois, nous pouvons rencontrer une situation pour afficher plusieurs graphiques à la fois, ce qui donnera une meilleure compréhension de l’ensemble de données. Pour de telles situations, nous pouvons utiliser la classe FacetGrid du module seaborn.

Ce tutoriel présentera comment utiliser la classe FacetGrid du module seaborn en Python.

La classe FacetGrid est utilisée pour visualiser la relation entre la distribution des données avec d’autres sous-ensembles de données en créant des grilles pour plusieurs tracés. Il trace l’ensemble de données sur la grille en spécifiant l’axe des lignes et des colonnes. C’est pratique lorsque nous travaillons avec un ensemble de données compliqué.

Différents tracés marins tels que relplot(), lmplot() et catplot() utilisent cette classe par défaut.

Nous utilisons le constructeur seaborn.FacetGrid() pour initier un objet de cette classe. Voir le code suivant.

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

Dans l’exemple ci-dessus, nous avons tracé le prix des différents produits en différentes quantités sur deux jours. Nous avons créé une grille à l’aide du constructeur seaborn.FacetGrid() et l’avons initialisée avec la valeur des lignes et des colonnes. Nous spécifions le tracé souhaité et les variables à tracer à l’aide de la fonction map(). Nous avons utilisé un ensemble de données relativement simple et nous avons pu obtenir le résultat souhaité. De plus, nous pouvons utiliser un troisième axe appelé teinte dans cette classe. Cela trace les données avec différentes catégories dans le même graphique dans différentes couleurs.

Nous modifions le code dans l’exemple mentionné précédemment et ajoutons le paramètre hue. Par example,

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

Seaborn FacetGrid avec le paramètre de teinte

Notez que le nombre total de plots a également été réduit en utilisant le paramètre hue. La fonction add_legend() permet d’ajouter une légende dans la figure finale.

Nous pouvons modifier la figure finale en utilisant de nombreux paramètres et fonctions avec cette classe. Par exemple, les paramètres height et aspect peuvent être utilisés pour modifier la taille de la figure finale, la fonction set_titles() peut être utilisée pour ajouter un titre à tracer sur chaque axe, la fonction set_xlabels() pour modifier les étiquettes des axes et plus encore.

Auteur: 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