Wie erstellt man Diagramme und Visualisierungen in Python?
In diesem Beitrag
Die zwei zentralen Bibliotheken: Matplotlib und Seaborn
Für Datenvisualisierungen in Python stehen zwei Bibliotheken im Mittelpunkt: Matplotlib und Seaborn. Matplotlib ist die Basis – sie bietet maximale Kontrolle über jeden Aspekt einer Grafik. Seaborn baut auf Matplotlib auf und liefert eine höhere Abstraktionsebene für statistische Grafiken, die mit deutlich weniger Code auskommt.
Für empirische Abschlussarbeiten – ob Bachelorarbeit, Masterarbeit oder Dissertation – ist es sinnvoll, beide Bibliotheken zu kennen. In der Praxis empfiehlt sich eine klare Aufgabenteilung: Seaborn für schnelle explorative Grafiken und publikationsnahe statistische Plots, Matplotlib für die gezielte Feinjustierung von Achsenbeschriftungen, Schriftgrößen und Layouts.
Diagramme mit Matplotlib erstellen
Figure und Axes: die Grundstruktur
Das Wichtigste beim Einstieg in Matplotlib ist das Verständnis der Figure-Axes-Struktur. Die Figure ist der übergeordnete Container – vergleichbar mit dem Blatt Papier. Die Axes sind die eigentlichen Plotbereiche innerhalb der Figure, in denen Daten gezeichnet werden.
Die offizielle Matplotlib-Dokumentation empfiehlt als Einstieg den objektorientierten Stil mit fig, ax = plt.subplots(). Dieser Ansatz ist besonders für wissenschaftliche Grafiken geeignet, weil Achsenbeschriftungen, Limits, Legenden und Subplots damit reproduzierbar konfiguriert werden können – ein wichtiger Punkt, wenn Grafiken für eine Abschlussarbeit konsistent aussehen sollen.
Ein einfaches Liniendiagramm
Das folgende Beispiel zeigt den empfohlenen objektorientierten Stil für ein einfaches Liniendiagramm. Es eignet sich beispielsweise zur Darstellung von Messwertverläufen oder Mittelwertunterschieden über mehrere Zeitpunkte:
import matplotlib.pyplot as plt
import numpy as np
# Beispieldaten: Mittelwerte zu drei Messzeitpunkten
zeitpunkte = [1, 2, 3]
mittelwerte_gruppe_a = [4.2, 5.1, 6.3]
mittelwerte_gruppe_b = [3.8, 4.0, 4.5]
fig, ax = plt.subplots(figsize=(7, 4))
ax.plot(zeitpunkte, mittelwerte_gruppe_a, marker='o', label='Gruppe A')
ax.plot(zeitpunkte, mittelwerte_gruppe_b, marker='s', label='Gruppe B')
ax.set_xlabel('Messzeitpunkt')
ax.set_ylabel('Mittelwert')
ax.set_title('Mittelwertverläufe nach Gruppe')
ax.legend()
plt.tight_layout()
plt.savefig('verlauf_gruppen.png', dpi=300)
plt.show()
Wichtig: Mit plt.savefig('dateiname.png', dpi=300) speichern Sie die Grafik in druckfähiger Auflösung. Das ist für Abschlussarbeiten entscheidend. Mehr dazu, wie Sie Python-Ergebnisse für Ihre Abschlussarbeit korrekt exportieren, finden Sie in einem separaten Beitrag.
Häufige Fehlerquelle: Datentypen
Ein praktischer Warnhinweis aus der Matplotlib-Dokumentation: Werden numerische oder Datumswerte versehentlich als Strings übergeben, interpretiert Matplotlib sie als Kategorien. Das Ergebnis sind hoffnungslos überladene Achsenticks. Prüfen Sie daher vor dem Plotten immer den Datentyp Ihrer Spalten – zum Beispiel mit df.dtypes in pandas.
Statistische Visualisierungen mit Seaborn
Warum Seaborn für empirische Arbeiten?
Matplotlib ist sehr mächtig – aber für statistische Grafiken in empirischen Arbeiten oft aufwändig. Matplotlib wurde vor pandas entwickelt, weshalb DataFrame-Strukturen nicht immer so direkt genutzt werden können, wie Forschende es für ihre Datentabellen erwarten. Seaborn löst dieses Problem: Es integriert pandas-DataFrames nativ, bringt sinnvollere Farbvoreinstellungen mit und stellt High-Level-Funktionen für die häufigsten statistischen Plottypen bereit.
Für Studierende, die Python für die statistische Auswertung ihrer Abschlussarbeit einsetzen, ist Seaborn deshalb oft der schnellere Weg zu einer ansehnlichen Grafik.
Die wichtigsten Seaborn-Diagrammtypen
Seaborn unterteilt seine Funktionen in klare Kategorien, die direkt den typischen Fragestellungen empirischer Arbeiten entsprechen:
- Relationale Plots (
scatterplot,lineplot): Zusammenhänge zwischen zwei metrischen Variablen - Verteilungsplots (
histplot,kdeplot,boxplot): Verteilung einer oder mehrerer Variablen - Kategoriale Plots (
barplot,violinplot,stripplot): Gruppenvergleiche - Regressionsplots (
regplot,lmplot): Visualisierung linearer Zusammenhänge - Multi-Plot-Grids (
FacetGrid,pairplot): Mehrere Grafiken für Untergruppen oder Variablenpaare
Beispiel: Boxplot und Regressionsplot
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
# Beispieldaten
df = pd.DataFrame({
'gruppe': ['Kontroll'] * 30 + ['Intervention'] * 30,
'testwert': [4.1, 3.8, 5.2, 4.7, 3.9, 4.5, 5.0, 4.3, 4.8, 3.7,
4.2, 5.1, 4.6, 3.5, 4.9, 5.3, 4.0, 4.4, 3.6, 5.0,
4.1, 4.7, 5.2, 3.9, 4.8, 4.3, 5.1, 4.6, 3.8, 4.9,
5.5, 6.1, 5.8, 6.4, 5.9, 6.2, 5.7, 6.3, 6.0, 5.6,
6.1, 5.8, 6.5, 6.0, 5.9, 6.3, 5.7, 6.2, 5.8, 6.4,
6.0, 5.5, 6.1, 5.9, 6.3, 5.7, 6.2, 5.8, 6.0, 6.4]
})
# Boxplot für Gruppenvergleich
fig, ax = plt.subplots(figsize=(6, 4))
sns.boxplot(data=df, x='gruppe', y='testwert', ax=ax)
ax.set_xlabel('Gruppe')
ax.set_ylabel('Testwert')
ax.set_title('Verteilung der Testwerte nach Gruppe')
plt.tight_layout()
plt.savefig('boxplot_gruppen.png', dpi=300)
plt.show()
Für Regressionsvisualisierungen – etwa wenn Sie eine Regressionsanalyse in Python durchgeführt haben – bietet sich sns.regplot() an. Es zeichnet automatisch die Regressionsgerade und das Konfidenzband ein.
Welcher Diagrammtyp für welche Fragestellung?
Die Wahl des richtigen Diagrammtyps ist keine Frage des Geschmacks, sondern der Skalierung und des Erkenntnisziels. Die folgende Übersicht hilft bei der Entscheidung:
| Fragestellung | Datenniveau | Empfohlener Plot | Python-Befehl |
|---|---|---|---|
| Verteilung einer Variable | Metrisch | Histogramm / KDE-Plot | sns.histplot() |
| Gruppenvergleich | Metrisch + kategorial | Boxplot / Violinplot | sns.boxplot() |
| Häufigkeiten | Kategorial | Balkendiagramm | sns.countplot() |
| Zusammenhang zweier Variablen | Metrisch | Streudiagramm | sns.scatterplot() |
| Linearer Zusammenhang mit Trend | Metrisch | Regressionsplot | sns.regplot() |
| Zeitlicher Verlauf | Metrisch + temporal | Liniendiagramm | ax.plot() |
| Alle Variablenpaare | Metrisch | Pairplot | sns.pairplot() |
| Korrelationsmatrix | Metrisch | Heatmap | sns.heatmap() |
Wenn Sie unsicher sind, welcher Test zu Ihrem Datenniveau passt, lohnt sich ein Blick auf die verfügbaren Python-Tools für die Datenanalyse – dort finden Sie auch einen Überblick über die statistischen Verfahren, die mit den jeweiligen Visualisierungen sinnvoll kombiniert werden.
Diagramme für die Abschlussarbeit optimieren
Stil und Layout professionell gestalten
Für Abschlussarbeiten gelten oft strenge Formatvorgaben. Die wichtigsten Stellschrauben in Python sind:
- Schriftgröße: Lesbar auch bei Druckgröße – mindestens 10–12 pt für Achsenbeschriftungen
- Auflösung:
dpi=300beim Speichern für druckfähige Qualität - Farbwahl: Farbenblindheitsfreundliche Paletten, z. B.
palette='colorblind'in Seaborn - Achsenbeschriftungen: Immer vollständig inklusive Einheit, z. B. „Reaktionszeit (ms)“
- Legende: Nur einsetzen, wenn mehrere Gruppen oder Reihen unterschieden werden
- Weißraum:
plt.tight_layout()verhindert abgeschnittene Beschriftungen
Seaborn-Themes für einheitliches Design
Seaborn bietet fünf eingebaute Themes: darkgrid, whitegrid, dark, white und ticks. Für wissenschaftliche Publikationen und Abschlussarbeiten empfiehlt sich whitegrid oder ticks, da diese einen sauberen, kontrastreichen Hintergrund ohne störende Gitterlinien bieten.
import seaborn as sns
import matplotlib.pyplot as plt
# Einheitliches Theme für die gesamte Abschlussarbeit setzen
sns.set_theme(style='whitegrid', palette='colorblind', font_scale=1.2)
# Ab hier werden alle Grafiken in diesem Stil erstellt
# – auch Matplotlib-Plots profitieren von den Seaborn-Einstellungen
Das sns.set_theme() wirkt global für alle nachfolgenden Grafiken in Ihrer Session – setzen Sie es am Anfang Ihres Skripts oder Notebooks, damit alle Abbildungen ein konsistentes Erscheinungsbild haben.
Grafiken in verschiedene Formate exportieren
Matplotlib und Seaborn unterstützen verschiedene Ausgabeformate. Für Abschlussarbeiten gilt:
- PNG (300 dpi): Standard für Word-Dokumente und PDF-Importe
- PDF: Verlustfrei und ideal für LaTeX-Dokumente
- SVG: Vektorgrafik, die nachträglich in Inkscape oder Illustrator bearbeitbar ist
fig.savefig('abbildung_1.png', dpi=300, bbox_inches='tight')
fig.savefig('abbildung_1.pdf', bbox_inches='tight')
fig.savefig('abbildung_1.svg', bbox_inches='tight')
Der Parameter bbox_inches='tight' stellt sicher, dass Achsenbeschriftungen und Legenden nicht abgeschnitten werden – ein häufiger Fehler, der erst beim Öffnen der gespeicherten Datei auffällt.
plt.savefig() mit expliziter dpi-Angabe. Empfohlener Workflow: Matplotlib und Seaborn kombinieren
Explorative Phase mit Seaborn
In der explorativen Datenanalyse – also bevor Sie Hypothesen testen – geht es darum, Ihre Daten schnell zu verstehen. Seaborn ist hier die erste Wahl. Ein sns.pairplot(df) gibt Ihnen in einer Zeile einen Überblick über alle Variablenbeziehungen. sns.jointplot() zeigt gemeinsame und marginale Verteilungen zweier Variablen gleichzeitig. Das ist wertvoller erster Schritt, bevor Sie etwa einen t-Test in Python durchführen oder eine ANOVA berechnen.
Wie dieser explorative Schritt in den gesamten Analyseprozess eingebettet ist, beschreibt unser Beitrag zu den 6 Schritten der Datenanalyse – Visualisierung ist dort fester Bestandteil mehrerer Phasen.
Finale Grafiken mit Matplotlib verfeinern
Sobald Sie wissen, welche Abbildungen in Ihre Arbeit kommen, lohnt sich die Feinjustierung mit Matplotlib. Konkret bedeutet das:
- Achsenlimits gezielt setzen:
ax.set_xlim(0, 10) - Tick-Abstände manuell kontrollieren:
ax.set_xticks([0, 2, 4, 6, 8, 10]) - Horizontale oder vertikale Referenzlinien einfügen:
ax.axhline(y=5, linestyle='--', color='gray') - Annotationen für besondere Datenpunkte:
ax.annotate('Ausreißer', xy=(8, 12), xytext=(6, 13))
Diese Kombination – Seaborn für die Grundstruktur, Matplotlib für die Präzision – ist in der wissenschaftlichen Praxis weit verbreitet und macht aus einer funktionalen Grafik eine publikationsreife Abbildung.
Wann lohnt sich professionelle Unterstützung?
Wenn Sie neben der Visualisierung auch die statistische Auswertung sauber dokumentieren müssen, kann die Komplexität schnell steigen – besonders bei Mehrebenenmodellen, Faktorenanalysen oder komplexen Regressionsmodellen. Unsere Python-Beratung für statistische Auswertungen begleitet Sie von der Datenaufbereitung über die Analyse bis hin zur druckfertigen Grafik – mit persönlichem Ansprechpartner und Kenntnis der Anforderungen Ihrer Hochschule.
Checkliste: Grafiken für die Abschlussarbeit
- Richtiger Diagrammtyp für das Datenniveau gewählt
- Achsenbeschriftungen vollständig (inkl. Einheit)
- Schriftgröße mindestens 10–12 pt
- Legende vorhanden, wenn mehrere Gruppen dargestellt werden
- Farbenblindheitsfreundliche Palette verwendet
- Grafik mit dpi=300 als PNG oder PDF gespeichert
bbox_inches='tight'beim Speichern gesetzt- Einheitliches Design über alle Abbildungen hinweg (sns.set_theme)