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