Hier eine kurze Einführung zu ggplot2 für vielseitige und ansprechende Datenvisualisierungen.

Vorbereitung: Paket installieren und laden

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

1. Grundstruktur von 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()


Vergleich mit Base R

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.

2. Geoms – verschiedene Diagrammtypen

ggplot2 bietet eine Vielzahl sogenannter Geomelemente (geoms), mit denen sich unterschiedliche Diagrammtypen einfach erstellen lassen. Hier sind einige häufig genutzte Typen:

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)

3. Achsen, Titel und Beschriftungen

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()

4. Farben und Legenden

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()

Für Flächenfarben (z. B. in geom_bar() oder geom_area()) verwendet man fill = ... anstelle von color = ....

5. Themes in ggplot2

Mit theme_*() kann das Aussehen einer Grafik leicht angepasst werden. Es gibt eine Reihe vordefinierter Themes, die sich einfach austauschen lassen:

Die 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()