Violinplot mit Seaborn

Manav Narula 15 Februar 2024
Violinplot mit Seaborn

Die Funktion violinplot() erstellt einen solchen Graphen und stellt die Verteilung wie eine Kombination aus Kernel-Density-Graph und Boxplot dar. Es wird häufig von Analytikern und Statistikern verwendet, um die Verteilung kategorialer Daten zu verstehen. Der Hauptvorteil gegenüber den herkömmlichen Boxplots besteht darin, dass sie auch für Verteilungen mit mehreren Peaks verwendet werden können.

Die Geigenfigur im Plot kann etwas schwer zu verstehen sein, kann aber unterschiedliche statistische Werte darstellen. Die folgende Abbildung soll dies erläutern.

Informationen zu Geigenfiguren

Abgesehen von DataFrames kann die Funktion violinplot() mit einem einzelnen Serienobjekt, einem numpy-Array oder einem Listenvektor arbeiten.

Im folgenden Beispiel zeichnen wir die Violin-Plot-Verteilung einer einzelnen Variablen.

import random
import numpy as np

n = random.sample(range(0, 50), 30)
arr = np.array(n)
sns.violinplot(n)

Geigenhandlung in Seaborn

Beachten Sie, dass die Stichprobengröße einen großen Einfluss auf die endgültige Zahl im Violinplot hat. Die Darstellung kann bei einer kleinen Stichprobengröße irreführend sein. Wenn dies immer noch ein wenig verwirrend ist, kann man zum besseren Verständnis ein einfaches Streudiagramm über dem Geigendiagramm zeichnen.

Beispielsweise,

import random
import numpy as np

n = random.sample(range(0, 50), 30)
arr = np.array(n)
sns.violinplot(n)
sns.stripplot(n, color="red")

Violinplot in Seaborn mit einer anderen Stichprobengröße

Die Funktion striplot() zeichnet hier ein Streudiagramm über dem Geigendiagramm. Auf ähnliche Weise können Sie auch einen Boxplot über dem Violinplot zeichnen, um die Ähnlichkeit und die Unterschiede zwischen beiden zu verstehen.

Die Hauptanwendung von violinplot() liegt bei Datensätzen, die Verteilungen von Daten mit mehreren Kategorien zeigen. Im folgenden Code werden wir dies implementieren.

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.violinplot(data=df, y="Price", x="Quantity", hue="Product")

Violinplot in Seaborn zeigt die Datenverteilung

Beachten Sie, wie wir die Preisverteilungen von zwei verschiedenen Produkten bei unterschiedlichen Mengen an zwei Tagen effizient darstellen konnten. Beachten Sie die Verwendung des Parameters hue, um zwei Produkte mit unterschiedlichen Farben zu zeichnen.

Viele andere Argumente können verwendet werden, um die endgültige Figur zu optimieren und zu modifizieren. Mit dem Parameter split können wir die Kategorien einfach vergleichen. Ihre Bestellung kann mit dem Parameter order verwaltet werden. Jede Beobachtung kann mit dem Parameter inner innerhalb des Plots angezeigt werden.

Im folgenden Code versuchen wir, einige dieser Argumente 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.violinplot(
    data=df, y="Price", x="Quantity", hue="Product", inner="stick", split=True
)

Violinplot in Seaborn mit dem inneren Parameter

Die Funktion violinplot() gibt ein Matplotlib-Objekt vom Typ Achsen zurück, um alle diese Matplotlib-Funktionen zum Anpassen der endgültigen Figur zu verwenden. Wenn wir ein Objekt vom Typ FacetGrid zurückgeben möchten, können wir die Funktion catplot() verwenden und den Parameter kind als violin 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