FacetGrid in Seaborn

Manav Narula 15 Februar 2024
FacetGrid in Seaborn

Das seaborn-Modul wird zur Visualisierung und Erstellung schöner statistischer Diagramme in Python verwendet. Es basiert auf und verwendet die Bibliothek matlplotlib. Manchmal kann es vorkommen, dass mehrere Diagramme gleichzeitig angezeigt werden, was das Verständnis des Datensatzes verbessert. Für solche Situationen können wir die FacetGrid-Klasse aus dem seaborn-Modul verwenden.

In diesem Tutorial erfahren Sie, wie Sie die Klasse FacetGrid des seaborn-Moduls in Python verwenden.

Die Klasse FacetGrid wird verwendet, um die Beziehung zwischen der Datenverteilung mit anderen Teilmengen von Daten zu visualisieren, indem Gitter für mehrere Plots erstellt werden. Es zeichnet das Dataset im Raster durch Angabe der Zeilen- und Spaltenachse. Dies ist praktisch, wenn wir mit einem komplizierten Datensatz arbeiten.

Verschiedene Seegangsdiagramme wie relplot(), lmplot() und catplot() verwenden diese Klasse standardmäßig.

Wir verwenden den Konstruktor seaborn.FacetGrid(), um ein Objekt dieser Klasse zu initiieren. Siehe den folgenden Code.

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

Seaborn FacetGrid

Im obigen Beispiel haben wir den Preis für die verschiedenen Produkte in unterschiedlichen Mengen über zwei Tage aufgetragen. Wir haben mit dem Konstruktor seaborn.FacetGrid() ein Raster erstellt und mit dem Wert für Zeilen und Spalten initialisiert. Mit der Funktion map() geben wir den gewünschten Plot und die darzustellenden Variablen an. Wir haben einen relativ einfachen Datensatz verwendet und konnten das gewünschte Ergebnis erzielen. Außerdem können wir in dieser Klasse eine dritte Achse namens Farbton verwenden. Dadurch werden die Daten mit verschiedenen Kategorien in derselben Grafik in verschiedenen Farben dargestellt.

Wir ändern den Code im oben erwähnten Beispiel und fügen den Parameter hue hinzu. Beispielsweise,

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 mit dem Farbton-Parameter

Beachten Sie, dass die Gesamtzahl der Plots auch durch den Parameter hue reduziert wird. Die Funktion add_legend() wird verwendet, um eine Legende in die letzte Figur einzufügen.

Wir können die endgültige Figur mit vielen Parametern und Funktionen mit dieser Klasse optimieren. Zum Beispiel können die Parameter height und aspect verwendet werden, um die Größe der endgültigen Figur zu ändern, die Funktion set_titles() kann verwendet werden, um dem Plot auf jeder Achse einen Titel hinzuzufügen, die Funktion set_xlabels() um Achsenbeschriftungen und mehr zu ändern.

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