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 in R mit ggplot2?

R / RStudio · Maximilian Fuchs · 9. Juni 2026 · 10 Min. Lesezeit

Was ist ggplot2 und wie funktioniert das Prinzip?

Mit ggplot2 lassen sich Diagramme in R nach einem einheitlichen, logischen Baukastenprinzip erstellen – dem sogenannten Grammar of Graphics-Ansatz. Statt vorgefertigte Diagrammvorlagen aufzurufen, bauen Sie jedes Diagramm aus einzelnen Bestandteilen zusammen: Daten, Variablenzuordnungen und grafische Primitive.

Das mag im ersten Moment abstrakt klingen, macht in der Praxis aber vieles einfacher. Einmal verstanden, funktioniert das Prinzip für alle Diagrammtypen gleich – egal ob Streudiagramm, Balkendiagramm oder Boxplot.

Gut zu wissen ggplot2 ist Teil des sogenannten tidyverse – einer Sammlung von R-Paketen, die aufeinander abgestimmt sind. Wer bereits mit dplyr oder tidyr arbeitet, findet in ggplot2 dieselbe Denklogik.

Die offizielle ggplot2-Dokumentation beschreibt das System als deklarative Erstellung von Grafiken: Sie legen fest, was dargestellt werden soll, nicht wie R das technisch umsetzt. Die restlichen Details – Achsenbeschriftungen, Abstände, Standardfarben – übernimmt ggplot2 automatisch.

Installation und Vorbereitung

Bevor Sie loslegen, muss ggplot2 einmalig installiert werden. Falls Sie bereits das gesamte tidyverse installiert haben, ist ggplot2 bereits enthalten.

R
# Einmalige Installation
install.packages("ggplot2")

# Oder das gesamte tidyverse
install.packages("tidyverse")

# In jeder Sitzung laden
library(ggplot2)

Wer R noch nicht installiert hat, findet in unserem Beitrag zur Installation von R und RStudio eine Schritt-für-Schritt-Anleitung für alle gängigen Betriebssysteme.

Daten im richtigen Format bereitstellen

ggplot2 erwartet Daten im sogenannten tidy format: ein rechteckiger Data Frame, in dem jede Zeile eine Beobachtung und jede Spalte eine Variable darstellt. Die meisten CSV-Datensätze und SPSS-Exporte sind bereits in diesem Format – Sie müssen also in der Regel nichts umstrukturieren.

Für die folgenden Beispiele verwenden wir den in R integrierten Datensatz mtcars, der Fahrzeugdaten mit Variablen wie Motorleistung (hp), Gewicht (wt) und Kraftstoffverbrauch (mpg) enthält. Er eignet sich gut zum Üben, weil er sauber strukturiert und sofort verfügbar ist.

Die Grundstruktur eines ggplot2-Diagramms

Jedes ggplot2-Diagramm folgt demselben Template. Drei Bestandteile sind dabei zwingend erforderlich, alle weiteren liefern sinnvolle Standardwerte:

Bestandteile eines ggplot2-Diagramms
Bestandteil Funktion Erforderlich?
Data Der Data Frame mit den Rohdaten Ja
Mapping (aes) Welche Variable wird auf welche Achse/Farbe/Form gemappt? Ja
Geom Der Diagrammtyp (Punkte, Balken, Linien …) Ja
Scales Skalierung der Achsen und Farben Nein (Defaults)
Facets Aufteilung in Teildiagramme nach Gruppen Nein
Coordinates Koordinatensystem (kartesisch, polar, gespiegelt) Nein (Defaults)
Theme Optisches Layout (Hintergrund, Schrift, Raster) Nein (Defaults)

Das ggplot2-Cheat-Sheet von Posit/RStudio empfiehlt ein konkretes Syntax-Template als Ausgangspunkt für jedes Diagramm:

R
ggplot(data = <DATA>) +
  <GEOM_FUNCTION>(mapping = aes(<MAPPINGS>))

In der Praxis sieht ein vollständiges, lauffähiges Beispiel so aus:

R
# Streudiagramm: Motorleistung vs. Kraftstoffverbrauch
ggplot(data = mtcars, aes(x = hp, y = mpg)) +
  geom_point()

Mit diesen drei Zeilen haben Sie ein vollständiges Streudiagramm. Das +-Zeichen ist dabei kein mathematisches Plus, sondern der ggplot2-eigene Operator zum Hinzufügen von Layern. Jeder weitere Baustein wird mit einem + angehängt.

Variablen auf visuelle Eigenschaften mappen

Innerhalb von aes() legen Sie fest, welche Datenvariable welche visuelle Eigenschaft steuert. Das ist das zentrale Prinzip von ggplot2 – und sobald Sie es verstanden haben, erschließen sich alle Diagrammtypen von selbst.

R
# Farbe nach Anzahl der Zylinder, Punktgröße nach Gewicht
ggplot(data = mtcars, aes(x = hp, y = mpg, colour = factor(cyl), size = wt)) +
  geom_point()

Gängige Eigenschaften innerhalb von aes() sind x, y, colour, fill, size, shape und alpha (Transparenz). Eigenschaften, die fest für alle Datenpunkte gelten sollen (also nicht datengesteuert), werden außerhalb von aes() angegeben – etwa geom_point(colour = "steelblue", size = 2).

Die wichtigsten Diagrammtypen und wann man sie einsetzt

Welchen Diagrammtyp Sie wählen, hängt davon ab, was Sie zeigen möchten. Die folgende Übersicht zeigt die häufigsten Geoms für akademische Arbeiten:

Streudiagramm – geom_point()

Geeignet für den Zusammenhang zwischen zwei metrischen Variablen. In Abschlussarbeiten oft genutzt zur Visualisierung von Korrelationen oder Regressionsergebnissen.

R
ggplot(data = mtcars, aes(x = wt, y = mpg)) +
  geom_point() +
  geom_smooth(method = "lm", se = TRUE)  # Regressionsgerade mit Konfidenzband

Das geom_smooth(method = "lm") ergänzt automatisch eine lineare Regressionsgerade – nützlich, wenn Sie die Ergebnisse einer Regressionsanalyse in R visuell unterstützen möchten.

Balkendiagramm – geom_bar() und geom_col()

Für Häufigkeiten und Gruppenvergleiche. geom_bar() zählt automatisch, wie oft jeder Wert vorkommt. geom_col() verwenden Sie, wenn Sie bereits berechnete Werte darstellen möchten.

R
# Häufigkeit der Zylinderanzahl
ggplot(data = mtcars, aes(x = factor(cyl))) +
  geom_bar(fill = "steelblue") +
  labs(x = "Anzahl Zylinder", y = "Häufigkeit")

Boxplot – geom_boxplot()

Zeigt Median, Quartile und Ausreißer einer Verteilung – ideal für Gruppenvergleiche, wie sie bei einem t-Test oder einer ANOVA als Ergänzung sinnvoll sind.

R
# Kraftstoffverbrauch nach Anzahl Zylinder
ggplot(data = mtcars, aes(x = factor(cyl), y = mpg, fill = factor(cyl))) +
  geom_boxplot() +
  labs(x = "Zylinder", y = "Kraftstoffverbrauch (mpg)", fill = "Zylinder")

Histogramm – geom_histogram()

Zur Darstellung der Verteilung einer metrischen Variable. Wichtig für die Prüfung der Normalverteilungsannahme – ein Schritt, den viele Verfahren voraussetzen.

R
ggplot(data = mtcars, aes(x = mpg)) +
  geom_histogram(binwidth = 3, fill = "steelblue", colour = "white") +
  labs(x = "Kraftstoffverbrauch (mpg)", y = "Häufigkeit")

Liniendiagramm – geom_line()

Für Verläufe über die Zeit oder geordnete Kategorien. Typisch bei Längsschnittdaten oder Zeitreihen.

R
# Beispiel mit zeitlichem Verlauf (economics-Datensatz)
ggplot(data = economics, aes(x = date, y = unemploy)) +
  geom_line(colour = "darkred") +
  labs(x = "Jahr", y = "Arbeitslose (Tsd.)")

Diagramme gestalten: Titel, Farben und Themes

Ein ggplot2-Diagramm mit Standardeinstellungen sieht bereits ordentlich aus. Für eine Abschlussarbeit sollten Sie es jedoch gezielt anpassen: Achsenbeschriftungen, Titel und ein sauberes Layout sind in wissenschaftlichen Arbeiten Pflicht.

Beschriftungen mit labs()

R
ggplot(data = mtcars, aes(x = hp, y = mpg, colour = factor(cyl))) +
  geom_point(size = 3) +
  labs(
    title    = "Motorleistung und Kraftstoffverbrauch",
    subtitle = "Datensatz: mtcars",
    x        = "Motorleistung (PS)",
    y        = "Verbrauch (Meilen pro Gallone)",
    colour   = "Zylinder",
    caption  = "Quelle: mtcars (R base)"
  )

Themes für ein wissenschaftliches Erscheinungsbild

ggplot2 liefert mehrere eingebaute Themes. Für Abschlussarbeiten eignen sich besonders:

  • theme_minimal() – schlicht, kein grauer Hintergrund, gut lesbar
  • theme_bw() – schwarz-weiß mit Rahmen, für Print geeignet
  • theme_classic() – klassisches Erscheinungsbild ohne Rasterlinien
  • theme_void() – komplett leer, für spezielle Layouts
R
ggplot(data = mtcars, aes(x = hp, y = mpg)) +
  geom_point(colour = "steelblue", size = 3) +
  labs(title = "Leistung vs. Verbrauch", x = "Motorleistung (PS)", y = "Verbrauch (mpg)") +
  theme_minimal(base_size = 13)

Farben gezielt steuern

Die Farbpaletten von ggplot2 lassen sich über scale_colour_*() und scale_fill_*() anpassen. Für barrierefreie Diagramme empfiehlt sich die ColorBrewer-Palette, die in der ggplot2-Einführung als Beispiel für sinnvoll eingesetzte Scales gezeigt wird:

R
ggplot(data = mtcars, aes(x = hp, y = mpg, colour = factor(cyl))) +
  geom_point(size = 3) +
  scale_colour_brewer(palette = "Set2") +
  theme_minimal()

Mehrere Gruppen vergleichen mit Facets

Facets sind eine der mächtigsten Funktionen in ggplot2: Sie teilen ein Diagramm automatisch in mehrere Teildiagramme auf, eines pro Ausprägung einer Gruppierungsvariable. Das ist besonders nützlich, wenn Sie Ergebnisse für verschiedene Subgruppen Ihrer Stichprobe zeigen möchten.

R
# Streudiagramm separat für jede Zylinderanzahl
ggplot(data = mtcars, aes(x = hp, y = mpg)) +
  geom_point(colour = "steelblue") +
  facet_wrap(~ cyl, labeller = label_both) +
  labs(title = "Leistung vs. Verbrauch nach Zylinderanzahl") +
  theme_minimal()

Mit facet_grid(zeile ~ spalte) können Sie Teildiagramme nach zwei Variablen gleichzeitig aufteilen – etwa nach Geschlecht und Messzeitpunkt in einer längsschnittlichen Studie.

Einfach erklärt Denken Sie an Facets wie an ein Raster von kleinen Kopien desselben Diagramms – nur dass jede Kopie eine andere Teilgruppe zeigt. ggplot2 übernimmt dabei automatisch dieselben Achsenskalierungen, was den Vergleich zwischen Gruppen erleichtert.

Diagramme exportieren für Abschlussarbeiten

Für die Verwendung in Word, LaTeX oder PowerPoint müssen Diagramme exportiert werden. ggplot2 bietet dafür die Funktion ggsave(), die das zuletzt erstellte Diagramm speichert.

R
# Letztes Diagramm als PNG speichern
ggsave("diagramm_leistung_verbrauch.png", width = 18, height = 12, units = "cm", dpi = 300)

# Als PDF (vektorbasiert, ideal für LaTeX)
ggsave("diagramm_leistung_verbrauch.pdf", width = 18, height = 12, units = "cm")

# Bestimmtes ggplot-Objekt speichern
mein_plot <- ggplot(data = mtcars, aes(x = hp, y = mpg)) +
  geom_point() +
  theme_minimal()

ggsave("mein_diagramm.png", plot = mein_plot, width = 18, height = 12, units = "cm", dpi = 300)

Ein wichtiger Hinweis für Abschlussarbeiten: Verwenden Sie für Print-Ausgaben mindestens dpi = 300. Für digitale Einreichungen reicht oft dpi = 150. Das Dateiformat wählen Sie einfach über die Dateiendung – ggplot2 erkennt automatisch PNG, PDF, SVG, TIFF und weitere Formate.

Weitere Hinweise zum strukturierten Export von Analyseoutput finden Sie im Beitrag zum Export von R-Ergebnissen für Abschlussarbeiten.

Checkliste: Diagramm für die Abschlussarbeit

  • Achsenbeschriftungen mit Einheit und vollständigem Text versehen
  • Diagrammtitel (oder Bildunterschrift im Text) angeben
  • Legende bei gruppierten Daten vorhanden und verständlich
  • Theme auf theme_minimal() oder theme_bw() gesetzt
  • Export mit mindestens 300 dpi für Druckqualität
  • Dateiname sprechend und versioniert
  • Diagramm im Fließtext referenziert (z. B. „Abbildung 1 zeigt …")

Häufige Fehler und wie Sie sie vermeiden

In der Praxis tauchen beim Einstieg in ggplot2 immer wieder dieselben Probleme auf. Hier sind die häufigsten – und wie Sie sie beheben:

Fehler 1: aes() für feste Werte verwenden

Ein sehr häufiger Anfängerfehler: Eine Farbe soll für alle Punkte gelten – aber sie wird irrtümlich in aes() gesetzt.

R
# FALSCH – ggplot2 interpretiert "steelblue" als Datenvariable
geom_point(aes(colour = "steelblue"))

# RICHTIG – feste Eigenschaft außerhalb von aes()
geom_point(colour = "steelblue")

Fehler 2: Das + am Zeilenende vergessen

Das + muss am Ende der vorherigen Zeile stehen, nicht am Anfang der nächsten. Sonst interpretiert R den zweiten Teil als neue, separate Anweisung.

R
# FALSCH
ggplot(data = mtcars, aes(x = hp, y = mpg))
  + geom_point()

# RICHTIG
ggplot(data = mtcars, aes(x = hp, y = mpg)) +
  geom_point()

Fehler 3: Kategoriale Variablen nicht als Faktor behandeln

Wenn eine Variable wie Geschlecht oder Gruppe als Zahl codiert ist (z. B. 0/1), behandelt ggplot2 sie als metrisch. Konvertieren Sie sie mit factor() innerhalb von aes().

R
# Zylinderanzahl als Kategorie behandeln
ggplot(data = mtcars, aes(x = factor(cyl), y = mpg)) +
  geom_boxplot()

Häufiger Fehler Wer ggplot2 das erste Mal verwendet und einen Fehler wie "object not found" oder "could not find function" sieht, hat meist entweder das Paket nicht geladen (library(ggplot2) vergessen) oder einen Tippfehler im Variablennamen. Prüfen Sie beide Punkte zuerst.

ggplot2 ist eines der wichtigsten R-Pakete für statistische Auswertungen – und gleichzeitig eines, das mit wachsender Erfahrung immer leistungsfähiger wird. Wer die Grundlogik einmal verstanden hat, kann damit nahezu jede Visualisierung umsetzen, die eine wissenschaftliche Arbeit verlangt.

Falls Sie bei der Auswertung Ihrer Daten oder der Erstellung publikationsreifer Abbildungen Unterstützung benötigen, bietet unsere methodische Begleitung für R-Analysen eine individuelle Beratung durch erfahrene Statistikerinnen und Statistiker – vom Datensatz bis zum fertigen Diagramm.

ggplot2 R Datenvisualisierung Diagramme tidyverse Abschlussarbeit Grammar of Graphics RStudio

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!