Hier eine kurze Einführung zu ggplot2
für vielseitige
und ansprechende Datenvisualisierungen.
Bevor du ggplot2
nutzen kannst, musst du das Paket ggf.
installieren und laden:
install.packages("ggplot2") # nur einmal notwendig
library(ggplot2) # bei jedem neuen Skript nötig
ggplot2
# Struktur: Daten, Ästhetik und Geomelemente sind getrennt
# Beispielstruktur:
ggplot(data = DATEN, aes(x = ..., y = ...)) +
GEOM_ELEMENTE +
GESTALTUNGSELEMENTE
Beispiel:
data <- data.frame(x = 1:10, y = (1:10)^2)
ggplot(data, aes(x = x, y = y)) +
geom_line(color = "blue", linewidth = 1.2) +
labs(title = "Beispiel mit ggplot2",
x = "x-Werte", y = "y-Werte") +
theme_minimal()
Gestaltung des Plots und der Inhalt werden nicht voneinander getrennt. Das macht einfache Plots zwar schnell, aber weniger flexibel, besonders bei komplexeren Darstellungen.
x <- 1:10
y <- x^2
plot(x, y,
type = "l",
main = "Beispiel mit plot()",
xlab = "x-Werte", ylab = "y-Werte",
col = "blue", lwd = 2)
Die Trennung von Datenstruktur, Geomelementen und Gestaltung ermöglicht es, Grafiken klarer, reproduzierbarer und flexibler zu erstellen. Diese Flexibilität zeigt sich z. B. darin, dass Gestaltungselemente modular und unabhängig vom Dateninhalt verändert werden können. So lassen sich Plots leicht erweitern, vereinheitlichen oder systematisch anpassen – etwa für verschiedene Zielgruppen oder Veröffentlichungsformate.
ggplot2
bietet eine Vielzahl sogenannter
Geomelemente (geoms
), mit denen sich
unterschiedliche Diagrammtypen einfach erstellen lassen. Hier sind
einige häufig genutzte Typen:
geom_point()
– für Scatterplots (Punkte)geom_line()
– für Linienplotsgeom_bar(stat = "identity")
oder
geom_col()
– für Balkendiagrammegeom_histogram()
– für Histogrammegeom_boxplot()
– für Boxplotsgeom_smooth(method = "lm")
– fügt eine Regressionslinie
hinzu (z. B. bei Streudiagrammen)Diese Geoms können beliebig kombiniert und erweitert werden. Wichtig
ist, dass sie auf den gleichen Datensatz und die gleiche
aes()
-Definition aufbauen.Die Wahl des passenden Geoms
hängt natürlich von der Fragestellung und der Art der Daten ab.
Beispiel für einen Scatterplot mit Regressionslinie:
data <- data.frame(x = rnorm(100), y = rnorm(100))
ggplot(data, aes(x = x, y = y)) +
geom_point(color = "steelblue") +
geom_smooth(method = "lm", se = FALSE, color = "darkred") +
labs(
title = "Streudiagramm mit Regressionslinie",
x = "x-Werte", y = "y-Werte"
) +
theme_minimal()
## `geom_smooth()` using formula = 'y ~ x'
Im Vergleich dazu der Code für den Plot mit Base R. Scatterplot und Regressionslinie werden voneinander getrennt.
# Plot der Punkte
plot(x, y,
main = "Streudiagramm mit Regressionslinie",
xlab = "x-Werte",
ylab = "y-Werte",
col = "darkgreen",
pch = 16)
# Regressionslinie berechnen und einzeichnen
mod <- lm(y ~ x)
abline(mod, col = "black", lwd = 2)
Mit der Funktion labs()
lassen sich zentrale Elemente
wie Achsentitel, Gesamttitel oder Legendentitel anpassen:
labs(
title = "Mein Titel",
subtitle = "Ein Untertitel",
x = "X-Achse",
y = "Y-Achse",
caption = "Quelle: Eigene Darstellung"
)
Diese Informationen sind klar vom Rest des Codes getrennt und können jederzeit ergänzt oder angepasst werden, ohne den Plot neu zu schreiben. Dadurch ist man flexibler – z. B. wenn Achsentitel automatisiert oder beschriftet werden sollen (z. B. in Schleifen oder bei vielen Plots).
Beispiel:
data <- data.frame(x = 1:5, y = c(3, 5, 2, 7, 4))
ggplot(data, aes(x = x, y = y)) +
geom_col(fill = "steelblue") +
labs(
title = "Beispiel: Achsen und Titel",
subtitle = "Kurze Erläuterung",
x = "Kategorie", y = "Wert",
caption = "Quelle: Eigene Daten"
) +
theme_classic()
Mit der aes()
-Funktion können Farben als visuelles
Merkmal zugewiesen werden, z. B. je nach Kategorie. Die Legende wird
automatisch erstellt.
Beispiel mit zwei Gruppen:
data <- data.frame(
x = rep(1:10, 2),
y = c(1:10, 10:1),
Gruppe = rep(c("A", "B"), each = 10)
)
ggplot(data, aes(x = x, y = y, color = Gruppe)) +
geom_line(linewidth = 1.2) +
labs(title = "Vergleich zweier Gruppen",
x = "x", y = "y", color = "Gruppe") +
theme_light()
color = Gruppe
→ definiert die Farbzuordnung nach
Gruppeaes()
-Zuweisung
erzeugtlabs(color = "... ")
kann die Legendenüberschrift
angepasst werdenFür Flächenfarben (z. B. in geom_bar()
oder
geom_area()
) verwendet man fill = ...
anstelle
von color = ...
.
Mit theme_*()
kann das Aussehen einer Grafik leicht
angepasst werden. Es gibt eine Reihe vordefinierter Themes, die sich
einfach austauschen lassen:
theme_minimal()
– Klare, einfache Darstellungtheme_classic()
– Klassischer weißer Hintergrund mit
Achsentheme_light()
– Hell, mit leichter Gitterstrukturtheme_bw()
– Schwarz-Weiß mit klaren Kantentheme_dark()
– Dunkler Hintergrundtheme_void()
– Fast leer – gut für Karten oder
IconsDie Wahl des passenden Themes kann Lesbarkeit und Wirkung einer Grafik erheblich verbessern, je nach Zielgruppe oder Präsentationskontext.
# Beispiel-Daten: simulierte Zeitreihe
set.seed(123)
data <- data.frame(
Jahr = 2000:2020,
Nutzer = cumsum(runif(21, min = 5, max = 20))
)
ggplot(data, aes(x = Jahr, y = Nutzer)) +
geom_line(color = "cyan", linewidth = 1.5) +
geom_point(color = "white", size = 2) +
labs(
title = "Wachstum der Nutzerzahlen",
subtitle = "Simulierte Zeitreihe (2000–2020)",
x = "Jahr", y = "Anzahl (in Tausend)"
) +
theme_dark()