EMZETT.
Login

Kurz: R kann Diagramme direkt erzeugen. Im Skript speicherst du sie in Dateien (png(), pdf(), svg()), in RStudio erscheinen sie im Plot-Fenster:

Teil des Kurses R

Kapitel 8 von 9 im Kurs R (Abschnitt „Ökosystem“). Mit Fortschritt, Quiz und Zertifikat auf der Lernseite.

Grafiken mit Base R

R kann Diagramme direkt erzeugen. Im Skript speicherst du sie in Dateien (png(), pdf(), svg()), in RStudio erscheinen sie im Plot-Fenster:

png("diagramm.png", width = 800, height = 500)
 
plot(mtcars$wt, mtcars$mpg, main = "Verbrauch und Gewicht",
     xlab = "Gewicht (1000 lbs)", ylab = "Meilen pro Gallone",
     pch = 19, col = "steelblue")
abline(lm(mpg ~ wt, data = mtcars), col = "red", lwd = 2)
legend("topright", legend = c("Autos", "Regression"), col = c("steelblue", "red"), pch = c(19, NA), lty = c(NA, 1))
 
dev.off()

Die wichtigsten Diagrammtypen:

FunktionDiagramm
plot(x, y)Streudiagramm; mit type = "l" Linie
hist(x)Histogramm
boxplot(y ~ gruppe, data)Boxplot
barplot(table(x))Balkendiagramm
pie(werte)Kreisdiagramm (selten sinnvoll)
pairs(daten)Streudiagramm-Matrix
curve(sin, 0, 2*pi)Funktionskurve
par(mfrow = c(1, 2))mehrere Diagramme nebeneinander

Wir können das Ergebnis der Berechnungen auch ohne Grafik prüfen:

h <- hist(mtcars$mpg, plot = FALSE, breaks = seq(10, 35, by = 5))
h$counts
h$mids
b <- boxplot(mpg ~ cyl, data = mtcars, plot = FALSE)
b$stats
names(b$n) <- b$names
b$n
bp <- barplot(table(mtcars$gear), plot = FALSE)
bp

Ausgabe:

[1]  6 12  8  2  4
[1] 12.5 17.5 22.5 27.5 32.5
     [,1]  [,2] [,3]
[1,] 21.4 17.80 13.3
[2,] 22.8 18.65 14.3
[3,] 26.0 19.70 15.2
[4,] 30.4 21.00 16.4
[5,] 33.9 21.40 19.2
 4  6  8
11  7 14
     [,1]
[1,]  0.7
[2,]  1.9
[3,]  3.1

Ein einfaches Text-Diagramm geht auch direkt in der Konsole:

haeufig <- table(mtcars$cyl)
for (n in names(haeufig)) cat(sprintf("%s Zyl. | %s %d\n", n, strrep("#", haeufig[[n]]), haeufig[[n]]))

Ausgabe:

4 Zyl. | ########### 11
6 Zyl. | ####### 7
8 Zyl. | ############## 14

ggplot2: Grammatik der Grafiken

Das meistgenutzte Paket für schöne Diagramme. Du beschreibst Daten (data), Zuordnung (aes), Formen (geom_*) in Schichten:

library(ggplot2)
 
ggplot(mtcars, aes(x = wt, y = mpg, color = factor(cyl))) +
  geom_point(size = 3) +
  geom_smooth(method = "lm", se = FALSE) +
  labs(title = "Verbrauch und Gewicht", x = "Gewicht", y = "mpg", color = "Zylinder") +
  theme_minimal()
 
ggsave("plot.png", width = 8, height = 5)

Weitere Schichten: geom_bar, geom_histogram, geom_boxplot, geom_line, facet_wrap(~ gruppe) für Kleinbilder.

Das Tidyverse

Eine Sammlung zusammenpassender Pakete: dplyr (Datenaufbereitung), tidyr (Umformen), readr (Einlesen), ggplot2 (Grafik), stringr (Text), lubridate (Datum), purrr (funktionale Programmierung). Der Pipe-Operator (|> in Base R seit 4.1, %>% im Tidyverse) reicht das Ergebnis weiter:

library(dplyr)
 
mtcars |>
  filter(mpg > 20) |>
  group_by(cyl) |>
  summarise(anzahl = n(), mittel_hp = mean(hp), max_mpg = max(mpg)) |>
  arrange(desc(anzahl))
 
daten |> mutate(kmpl = mpg * 0.425) |> select(mpg, kmpl) |> head()

Auch ohne Zusatzpakete steht die Pipe zur Verfügung:

mtcars |>
  subset(mpg > 20) |>
  (\(d) aggregate(hp ~ cyl, data = d, FUN = mean))() |>
  (\(d) d[order(d$cyl), ])()
 
c(4, 9, 16) |> sqrt() |> sum()

Ausgabe:

cyl        hp
1   4  82.63636
2   6 110.00000
[1] 9
dplyr-VerbAufgabe
filter()Zeilen auswählen
select()Spalten auswählen
mutate()Spalten berechnen
arrange()sortieren
group_by() + summarise()gruppieren und zusammenfassen
left_join()Tabellen verbinden
pivot_longer() / pivot_wider() (tidyr)Tabelle umformen

Pakete verwalten

install.packages("dplyr")        # einmal installieren (aus CRAN)
library(dplyr)                   # in jeder Sitzung laden
packageVersion("dplyr")
update.packages()
renv::init()                     # projektspezifische Paketversionen (reproduzierbar)
"stats" %in% loadedNamespaces()
exists("mean")
environmentName(environment(mean))
is.function(utils::head)

Ausgabe:

[1] TRUE
[1] TRUE
[1] "base"
[1] TRUE

Berichte und Anwendungen

  • R Markdown / Quarto: Text, Code und Ergebnisse in einem Dokument (HTML, PDF, Word)
  • Shiny: interaktive Web-Apps in R
  • tidymodels / caret: Machine Learning
  • data.table: sehr schnelle Tabellenverarbeitung
  • Bioconductor: Bioinformatik-Pakete

Ein Quarto-Dokument (bericht.qmd) besteht aus einem Kopf mit title: und format: html, normalem Markdown-Text, Inline-Code wie r round(mean(mtcars$mpg), 1) für berechnete Werte und Code-Blöcken (Chunks), die mit {r} geöffnet werden. Mit quarto render bericht.qmd entsteht daraus HTML, PDF oder Word.

Merke

  • Base R zeichnet mit plot, hist, boxplot, barplot; speichern mit png() … dev.off()
  • ggplot2 baut Grafiken schichtweise (ggplot() + geom_*())
  • Tidyverse (dplyr, tidyr, readr) mit Pipe |> für lesbare Datenaufbereitung
  • Pakete: install.packages einmal, library je Sitzung
  • Berichte mit Quarto/R Markdown, Apps mit Shiny

Übungsaufgabe

Zeichne (in RStudio) ein Histogramm der PS-Werte (hp) in mtcars und beschrifte die Achsen.

Quiz zur Selbstkontrolle

Weiter im Kurs

Zurück: Statistik, Tests und Modelle

Weiter: Referenz und Spickzettel

Alle Kapitel: R im Überblick