Seit 2019 im DACH-RaumSeit 2019
50+ Statistik-Experten50+ Experten
Über 1.200 Projekte1.200+ Projekte
Alle StatistikprogrammeAlle Programme
Express möglichExpress
Statistik-Ratgeber

Wie erstellt man Diagramme und Visualisierungen in Python?

Python · Maximilian Fuchs · 9. Juni 2026 · 10 Min. Lesezeit

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.

Gut zu wissen Beide Bibliotheken lassen sich problemlos kombinieren. Ein Seaborn-Plot ist intern ein Matplotlib-Objekt – Sie können ihn also jederzeit mit Matplotlib-Befehlen weiter anpassen.

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.

Einfach erklärt AxesAxis: Die Axes ist die gesamte Plotregion mit Titel und Labels. Die Axis-Objekte (Plural: Axes) steuern dagegen Skalen, Ticks und Tick-Labels auf den einzelnen Achsen. Diese Unterscheidung verwirrt am Anfang oft – halten Sie sie im Hinterkopf.

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:

Python
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

Python
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:

Diagrammtypen nach Fragestellung und Datenniveau
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=300 beim 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.

Python
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
Python
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.

Häufiger Fehler Grafiken direkt per Screenshot aus dem Jupyter-Notebook zu kopieren. Die Auflösung ist dabei für Druckzwecke fast immer unzureichend. Verwenden Sie immer 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)
Python Matplotlib Seaborn Datenvisualisierung Diagramme Abschlussarbeit Datenanalyse Statistik

Ihr persönlicher Ansprechpartner

Maximilian Fuchs, M. Sc.

Teilen Sie uns mit, wie wir Ihnen helfen können.

  • Persönlicher Ansprechpartner
  • Schnelle Rückmeldung
  • Transparente Preise
  • Schutz Ihrer Daten

Fragen? Einfach anrufen!