Violin Plotting mit Matplotlib

Beginner

This tutorial is from open-source community. Access the source code

Einführung

In diesem Lab werden wir lernen, wie man mit der Matplotlib-Bibliothek in Python Violinplots erstellt. Violinplots werden verwendet, um die Verteilung eines Datensatzes zu visualisieren. Diese Diagramme ähneln Boxplots, zeigen jedoch nicht nur die Summenstatistiken, sondern die volle Verteilung der Daten.

Wir werden einen Beispiel-Datensatz verwenden, um Violinplots zu erstellen und verschiedene Parameter zu ändern, um die Änderungen im Diagramm zu beobachten.

Tipps für die VM

Nachdem der Start der VM abgeschlossen ist, klicken Sie in der oberen linken Ecke, um zur Registerkarte Notebook zu wechseln und Jupyter Notebook für die Übung zu öffnen.

Manchmal müssen Sie einige Sekunden warten, bis Jupyter Notebook vollständig geladen ist. Die Validierung von Vorgängen kann aufgrund der Einschränkungen in Jupyter Notebook nicht automatisiert werden.

Wenn Sie bei der Lernphase Probleme haben, können Sie Labby gerne fragen. Geben Sie nach der Sitzung Feedback, und wir werden das Problem für Sie prompt beheben.

Importieren der erforderlichen Bibliotheken

Wir beginnen mit dem Importieren der erforderlichen Bibliotheken, um die Violinplots zu erstellen.

import matplotlib.pyplot as plt
import numpy as np

Erstellen eines Beispiel-Datensatzes

Wir werden einen Beispiel-Datensatz mit der numpy-Bibliothek erstellen. Wir werden sechs Datensätze mit unterschiedlichen Standardabweichungen erstellen.

## Fixing random state for reproducibility
np.random.seed(19680801)

## fake data
pos = [1, 2, 4, 5, 7, 8]
data = [np.random.normal(0, std, size=100) for std in pos]

Erstellen von benutzerdefinierten Violinplots

Wir werden benutzerdefinierte Violinplots erstellen, indem wir verschiedene Parameter ändern. Wir werden 5 benutzerdefinierte Violinplots mit unterschiedlichen Parametern erstellen.

fig, axs = plt.subplots(nrows=2, ncols=5, figsize=(10, 6))

## Benutzerdefinierter Violinplot 1
axs[0, 0].violinplot(data, pos, points=20, widths=0.3,
                     showmeans=True, showextrema=True, showmedians=True)
axs[0, 0].set_title('Benutzerdefinierter Violinplot 1', fontsize=fs)

## Benutzerdefinierter Violinplot 2
axs[0, 1].violinplot(data, pos, points=40, widths=0.5,
                     showmeans=True, showextrema=True, showmedians=True,
                     bw_method='silverman')
axs[0, 1].set_title('Benutzerdefinierter Violinplot 2', fontsize=fs)

## Benutzerdefinierter Violinplot 3
axs[0, 2].violinplot(data, pos, points=60, widths=0.7, showmeans=True,
                     showextrema=True, showmedians=True, bw_method=0.5)
axs[0, 2].set_title('Benutzerdefinierter Violinplot 3', fontsize=fs)

## Benutzerdefinierter Violinplot 4
axs[0, 3].violinplot(data, pos, points=60, widths=0.7, showmeans=True,
                     showextrema=True, showmedians=True, bw_method=0.5,
                     quantiles=[[0.1], [], [], [0.175, 0.954], [0.75], [0.25]])
axs[0, 3].set_title('Benutzerdefinierter Violinplot 4', fontsize=fs)

## Benutzerdefinierter Violinplot 5
axs[0, 4].violinplot(data[-1:], pos[-1:], points=60, widths=0.7,
                     showmeans=True, showextrema=True, showmedians=True,
                     quantiles=[0.05, 0.1, 0.8, 0.9], bw_method=0.5)
axs[0, 4].set_title('Benutzerdefinierter Violinplot 5', fontsize=fs)

Weitere benutzerdefinierte Violinplots erstellen

Wir werden weitere benutzerdefinierte Violinplots mit unterschiedlichen Parametern erstellen.

## Benutzerdefinierter Violinplot 6
axs[1, 0].violinplot(data, pos, points=80, vert=False, widths=0.7,
                     showmeans=True, showextrema=True, showmedians=True)
axs[1, 0].set_title('Benutzerdefinierter Violinplot 6', fontsize=fs)

## Benutzerdefinierter Violinplot 7
axs[1, 1].violinplot(data, pos, points=100, vert=False, widths=0.9,
                     showmeans=True, showextrema=True, showmedians=True,
                     bw_method='silverman')
axs[1, 1].set_title('Benutzerdefinierter Violinplot 7', fontsize=fs)

## Benutzerdefinierter Violinplot 8
axs[1, 2].violinplot(data, pos, points=200, vert=False, widths=1.1,
                     showmeans=True, showextrema=True, showmedians=True,
                     bw_method=0.5)
axs[1, 2].set_title('Benutzerdefinierter Violinplot 8', fontsize=fs)

## Benutzerdefinierter Violinplot 9
axs[1, 3].violinplot(data, pos, points=200, vert=False, widths=1.1,
                     showmeans=True, showextrema=True, showmedians=True,
                     quantiles=[[0.1], [], [], [0.175, 0.954], [0.75], [0.25]],
                     bw_method=0.5)
axs[1, 3].set_title('Benutzerdefinierter Violinplot 9', fontsize=fs)

## Benutzerdefinierter Violinplot 10
axs[1, 4].violinplot(data[-1:], pos[-1:], points=200, vert=False, widths=1.1,
                     showmeans=True, showextrema=True, showmedians=True,
                     quantiles=[0.05, 0.1, 0.8, 0.9], bw_method=0.5)
axs[1, 4].set_title('Benutzerdefinierter Violinplot 10', fontsize=fs)

Anpassen der Plot-Appearanz

Wir werden die Appearanz des Plots anpassen, indem wir die y-Achsenbeschriftungen entfernen und einen Titel für den Plot hinzufügen.

for ax in axs.flat:
    ax.set_yticklabels([])

fig.suptitle("Violin Plotting Examples")
fig.subplots_adjust(hspace=0.4)
plt.show()

Zusammenfassung

In diesem Lab haben wir gelernt, wie man Violinplots mit der Matplotlib-Bibliothek in Python erstellt. Wir haben benutzerdefinierte Violinplots erstellt, indem wir verschiedene Parameter wie die Anzahl der Punkte, die Bandbreite der KDE und die Quantile geändert haben. Wir haben auch gelernt, wie man die Appearanz des Plots anpasst, indem man die y-Achsenbeschriftungen entfernt und einen Titel für den Plot hinzufügt.