violinplot - janehlenb/Projektarbeit-ChatGPT-Python GitHub Wiki

Einführung

In diesem Abschnitt werden wir uns mit dem faszinierenden violinplot Plot befassen. Aber was ist ein violinplot überhaupt? Nun, stellen wir uns vor, wir hätten eine Gruppe von Musikinstrumenten und möchten ihre Verteilung der Tonhöhen darstellen. Genau das macht ein violinplot - er zeigt uns die Verteilung und die Dichte der Daten in einem eleganten und informativen Diagramm.

Aber warum sollte dich das interessieren? Nun, stell dir vor, du analysierst Daten über Musikpräferenzen und möchtest herausfinden, ob es einen Unterschied in den Tonhöhen zwischen verschiedenen Genres gibt. Ein violinplot ermöglicht es dir, diese Unterschiede auf einen Blick zu erkennen und vielleicht sogar ein paar lustige Erkenntnisse zu gewinnen.

In diesem Tutorial wirst du lernen, wie du violinplots erstellst, verschiedene Anpassungen vornimmst und sie in deine Datenvisualisierung einfügst. Also lass uns die Saiten spannen und loslegen!

Theorie

Bevor wir uns die Hände schmutzig machen, werfen wir einen Blick auf die Theorie hinter dem violinplot. Ein violinplot kombiniert mehrere Diagramme, um uns ein umfassendes Bild der Datenverteilung zu geben. Es besteht aus zwei Kernkomponenten: dem "Violin" und den "Scatter-Points".

Das "Violin" repräsentiert die Dichteschätzung der Daten. Es ähnelt der Form eines Geigenkastens (daher der Name) und gibt uns Informationen über den Median, Quartile, Ausreißer und Dichteverteilung. Je breiter das Violin an einer bestimmten Stelle ist, desto mehr Datenpunkte befinden sich dort.

Die "Scatter-Points" zeigen uns die einzelnen Datenpunkte an. Sie helfen uns dabei, Ausreißer zu erkennen und ein besseres Verständnis der tatsächlichen Datenpunkte zu bekommen.

Aber lass uns nicht nur über Theorie reden - lasst uns ein Beispiel betrachten!

Allgemeines Code-Beispiel

Hier ist ein allgemeines Code-Beispiel, um dir eine Vorstellung davon zu geben, wie ein violinplot in Python aussehen kann:

import matplotlib.pyplot as plt

# Beispiel-Daten
data = [1, 1, 2, 3, 3, 3, 4, 5, 5, 6]

# Erstelle den violinplot
plt.violinplot(data)

# Zeige das Diagramm an
plt.show()

Dieser Code erstellt einen einfachen violinplot für eine fiktive Datensammlung. Es mag vielleicht noch nicht wie eine Geige aussehen, aber wir werden das später ändern!

Explizites Code-Beispiel

Lass uns nun dasselbe Beispiel in Python-Code umsetzen und das Diagramm schrittweise aufbauen:

import matplotlib.pyplot as plt
import numpy as np

# Erstelle einige Beispieldaten
np.random.seed(42)
data1 = np.random.normal(0, 1, 200)
data2 = np.random.normal(2, 0.5, 200)
data3 = np.random.normal(3, 1.5, 200)
data4 = np.random.normal(1, 1, 200)
data = [data1, data2, data3, data4]

# Erstelle den violinplot
plt.violinplot(data,
               showmeans=True,
               showmedians=True,
               showextrema=True)

# Passe die Achsentitel an
plt.xlabel('Genre')
plt.ylabel('Tonhöhe')

# Füge einen Titel hinzu
plt.title('Verteilung der Tonhöhen in verschiedenen Genres')

# Zeige das Diagramm an
plt.show()

Hier haben wir bereits realistischere Daten und einige zusätzliche Anpassungen vorgenommen. Die Daten repräsentieren die Tonhöhen in verschiedenen Musikgenres, und wir haben auch die Optionen showmeans, showmedians und showextrema aktiviert, um uns noch mehr Informationen zu geben.

Praxis

Jetzt, da wir die Theorie und die Beispiele besprochen haben, lass uns deine neu gewonnenen Fähigkeiten in die Praxis umsetzen!

Aufgabe 1

Erstelle einen violinplot für eine Liste von Altersgruppen und ihren dazugehörigen Gewichten. Vergiss nicht, Achsentitel und einen Titel hinzuzufügen. Verwende die folgenden Beispielwerte:

ages = ['20s', '30s', '40s', '50s', '60s']
weights = [[68, 72, 78, 74, 70], [72, 76, 80, 82, 75], [78, 82, 85, 88, 92],
           [76, 80, 84, 88, 92], [70, 72, 75, 78, 80]]

Hier ist eine mögliche Lösung für die Aufgabe 1:

import matplotlib.pyplot as plt

ages = ['20s', '30s', '40s', '50s', '60s']
weights = [[68, 72, 78, 74, 70], [72, 76, 80, 82, 75], [78, 82, 85, 88, 92],
           [76, 80, 84, 88, 92], [70, 72, 75, 78, 80]]

plt.violinplot(weights)

plt.xlabel('Altersgruppen')
plt.ylabel('Gewicht')

plt.title('Verteilung des Gewichts in verschiedenen Altersgruppen')

plt.show()

Aufgabe 2

Erstelle einen violinplot für zwei verschiedene Gruppen von Daten: "Männer" und "Frauen". Jede Gruppe sollte eine eigene Geige haben, um die Verteilung der Daten zu zeigen. Füge auch einen Text hinzu, der angibt, welche Gruppe eine höhere Tonhöhe hat. Verwende die folgenden Beispielwerte:

men_data = [60, 65, 70, 72, 75, 77, 80, 85, 88, 90]
women_data = [55, 58, 62, 66, 68, 70, 72, 74, 76, 78]

Hier ist eine mögliche Lösung für die schwere Aufgabe:

import matplotlib.pyplot as plt

men_data = [60, 65, 70, 72, 75, 77, 80, 85, 88, 90]
women_data = [55, 58, 62, 66, 68, 70, 72, 74, 76, 78]

data = [men_data, women_data]

plt.violinplot(data)

plt.xlabel('Geschlecht')
plt.ylabel('Tonhöhe')

plt.title('Verteilung der Tonhöhen zwischen Männern und Frauen')

plt.text(1.2, 83, 'Frauen haben höhere Tonhöhe', fontsize=10, ha='center')

plt.show()

Fazit

Herzlichen Glückwunsch, du hast erfolgreich violinplots erstellt und deine Daten analysiert! Du bist jetzt bereit, in der Welt der Datenvisualisierung zu glänzen.

Keep calm and plot on!

Links / Weiteres Material

Dokumentation

https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.violinplot.html