R ggplot2 Schnellstart: Schnelle Rezepte für verlässliche Diagramme
Problem
Analysten haben Schwierigkeiten, unter Zeitdruck konsistente R‑Diagramme zu erstellen. Der ständige Wechsel zwischen Geoms, Scales und Themes ohne Vorlage führt zu unruhigen Visualisierungen und wiederholten Korrekturen.
Agitation
Falsch zugeordnete Aesthetics, vergessene Legenden und nicht passende Farbskalen erzeugen Diagramme, die Stakeholder in die Irre führen. Zeit geht dabei verloren, Standardwerte zu tweaken, statt sich auf das eigentliche Signal zu konzentrieren.
Lösung
Verwenden Sie einen kompakten Satz von ggplot2‑Rezepten, die Aesthetics explizit halten, Mappings von festen Einstellungen trennen und ein aufgeräumtes Theme verwenden. Die folgenden Muster decken die am häufigsten benötigten Plot‑Typen ab und zeigen, wie man Facets für Vergleiche einsetzt.
Scatter: Zusammenhänge und Trendlinien
library(ggplot2)
ggplot(mtcars, aes(x = wt, y = mpg, color = factor(cyl))) +
geom_point(size = 3, alpha = 0.8) +
geom_smooth(method = "lm", se = FALSE, linewidth = 0.8) +
labs(color = "Cylinders", x = "Weight", y = "MPG") +
theme_minimal()Line: Zeitreihen oder geordnete Kategorien
ggplot(economics, aes(x = date, y = unemploy)) +
geom_line(color = "#1f77b4", linewidth = 1) +
labs(x = "Date", y = "Unemployment") +
scale_x_date(date_breaks = "2 years", date_labels = "%Y") +
theme_minimal()Bar: Häufigkeiten oder Summen
ggplot(diamonds, aes(x = cut, fill = cut)) +
geom_bar(width = 0.7, color = "white") +
labs(x = "Cut", y = "Count") +
theme_minimal() +
theme(legend.position = "none")Box und Violin: Verteilungsvergleiche
ggplot(iris, aes(x = Species, y = Sepal.Length, fill = Species)) +
geom_violin(alpha = 0.4, color = NA) +
geom_boxplot(width = 0.18, outlier.shape = NA, alpha = 0.8) +
labs(x = NULL, y = "Sepal Length") +
theme_minimal() +
theme(legend.position = "none")Facets für schnelle Vergleiche
ggplot(diamonds, aes(carat, price, color = cut)) +
geom_point(alpha = 0.4, size = 1.5) +
facet_wrap(~ color) +
labs(x = "Carat", y = "Price") +
theme_light()Geoms und beste Einsatzszenarien
| Geom | Datentyp | Am besten geeignet für | Tipp |
|---|---|---|---|
geom_point() | numerisch vs. numerisch | Zusammenhänge, Cluster | Farbe/Form auf Kategorien mappen; geom_smooth() für Trends ergänzen. |
geom_line() | geordnetes x, numerisches y | Zeitreihen, Sequenzen | Eine Linie pro Gruppe mit group=; Sortierfehler vermeiden. |
geom_bar() (Count) / geom_col() (vorausaggregiert) | kategorial | Häufigkeiten oder Summen | position = "fill" für Prozentsätze verwenden. |
geom_boxplot() | kategorial vs. numerisch | Vergleich von Median/IQR | Mit coord_flip() für lange Labels kombinieren. |
geom_violin() | kategorial vs. numerisch | Verteilungsform | Mit Boxplots kombinieren, um Quartile zu zeigen. |
geom_histogram() | einzelne numerische Variable | Verteilung | bins oder binwidth explizit setzen. |
Aesthetics vs. feste Einstellungen
- Daten innerhalb von
aes()mappen:aes(color = species). - Feste Werte außerhalb von
aes()setzen:geom_point(color = "steelblue"). scale_*‑Funktionen verwenden, um Werte zu formatieren und Paletten zu steuern.
Theme‑ und Beschriftungs‑Checkliste
- Mit
theme_minimal()odertheme_light()für saubere Defaults starten. - Mit
labs(title, subtitle, caption)Kontext hinzufügen; Achsentexte kurz halten. - Redundante Legenden mit
theme(legend.position = "none")ausblenden, wenn Farben Facets oder Labels duplizieren. - Für Veröffentlichungen Schriftgrößen über
theme(text = element_text(size = 12))anpassen.
Startvorlage
base_plot <- ggplot(data, aes(x = x_var, y = y_var)) +
geom_point(color = "#4e79a7", alpha = 0.7) +
labs(
title = "Headline metric",
x = "X axis",
y = "Y axis",
caption = "Source: internal data"
) +
theme_minimal()Verwandte Guides
- Daten vor dem Plotten bereinigen: R dplyr Data Wrangling Pipeline
- Spezielle Optionen für Heatmaps: pheatmap in R
- Basistabellen schnell erstellen: How to Create a Dataframe in R