Seegeborener Schwarmplot

Manav Narula 16 Juli 2021
Seegeborener Schwarmplot

Ein Streudiagramm ist eines der einfachsten und nützlichsten Diagramme, die verwendet werden. Das seaborn-Modul in Python kann solche Diagramme noch einen Schritt weiter gehen und sie verwenden, um kategoriale Werte darzustellen.

Ein Schwarmdiagramm ist eine Art von Streudiagramm, das zur Darstellung kategorialer Werte verwendet wird. Es ist dem Stripplot sehr ähnlich, vermeidet jedoch die Überlappung von Punkten. Wir können das seaborn.swarmplot() verwenden, um solche Graphen zu erstellen.

Es ist nicht ratsam, diese Art von Diagramm zu verwenden, wenn der Stichprobenumfang groß ist.

Wir verwenden die Funktion swarmplot(), um im folgenden Code einen solchen Graphen für kategoriale Werte zu erstellen.

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

Seaborn Swarmplot für kategoriale Daten

Im obigen Beispiel können wir der Funktion swarmplot() den Parameter hue hinzufügen und die Kategorien für die beiden verschiedenen Produkte trennen. Wir können die beiden Produkte mit dem Argument dodge aufteilen und auf True setzen.

Zusätzlich können wir einige andere Argumente auch mit der Funktion swarmplot() verwenden. Die Größe und Farbe der Punkte kann mit den Argumenten size und color geändert werden. Wir können die für verschiedene Kategorien verwendete Farbkombination mit dem Parameter palette ändern. Das Argument linewidth fügt den Punkten der angegebenen Breite einen Rahmen hinzu. Die Reihenfolge der gezeichneten Kategorien kann mit dem Parameter order gesteuert werden.

Wir werden versuchen, die obigen Argumente im folgenden Beispiel zu verwenden.

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

Seaborn Schwarmplot mit Farbton und anderen Argumenten

Der swarmplot() kann auch als gute Ergänzung zu einem Box- oder Violinplot verwendet werden. Es gibt eine gute Vorstellung von der Verteilung der Daten.

Wir können mit dem folgenden Code einen Boxplot über dem Schwarmplot hinzufügen.

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

Seaborn Boxplot über Schwarmplot

Auch die Funktion catplot() kann einen solchen Schwarmplot erstellen. Dazu müssen wir den Wert für den Parameter kind in der Funktion catplot() als swarm angeben.

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