Wie erstellt man Diagramme in R mit ggplot2?
In diesem Beitrag
- Was ist ggplot2 und wie funktioniert das Prinzip?
- Installation und Vorbereitung
- Die Grundstruktur eines ggplot2-Diagramms
- Die wichtigsten Diagrammtypen und wann man sie einsetzt
- Diagramme gestalten: Titel, Farben und Themes
- Mehrere Gruppen vergleichen mit Facets
- Diagramme exportieren für Abschlussarbeiten
- Häufige Fehler und wie Sie sie vermeiden
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.
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.
# 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:
| 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:
ggplot(data = <DATA>) +
<GEOM_FUNCTION>(mapping = aes(<MAPPINGS>))
In der Praxis sieht ein vollständiges, lauffähiges Beispiel so aus:
# 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.
# 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.
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.
# 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.
# 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.
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.
# 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()
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 lesbartheme_bw()– schwarz-weiß mit Rahmen, für Print geeignettheme_classic()– klassisches Erscheinungsbild ohne Rasterlinientheme_void()– komplett leer, für spezielle Layouts
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:
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.
# 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.
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.
# 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()odertheme_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.
# 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.
# 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().
# Zylinderanzahl als Kategorie behandeln
ggplot(data = mtcars, aes(x = factor(cyl), y = mpg)) +
geom_boxplot()
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.