Datenanalyse mit R

Online-Tutorial für Anfänger

6.1. Vorbemerkung

In diesem Kapitel wird grundlegendes Wissen zur Visualisierung von Daten vermittelt. Grundsätzlich gilt, dass Grafiken in R programmiert werden. Für Anfänger geht dieser Umstand sicherlich mit signifikantem Einarbeitungsaufwand einher. Die nötige Geduld zahlt sich jedoch aus, weil mit R der Visualisierung von Daten fast keine bzw. nur die Grenzen des Anwenders gesetzt sind. So können mit R individualisierte und äußerst hochwertige Grafiken erstellt werden.

Mittlerweile gibt es auch innovative Zusatzpakete für Visualisierungen, die sonst erforderliche Programmierungen von Grafiken ersetzen bzw. vereinfachen, bspw.:

Eine Übersicht zu weiteren Paketen findet sich in Kapitel 1.3. "Nützliche Zusatzpakete".

6.2. Funktionen zur Erstellung von Grafiken

Wichtige Funktionen wie plot() legen die Grundstruktur von Grafiken fest. Die erzeugten Grafiken werden an das aktive Grafik-Fenster geschickt und dort angezeigt (in R-Studio im Fenster "plots" i. d. R. unten rechts). Diese erzeugten Grafiken sind zwar vollständig, aber ergänzungsbedürftig.

Auch in diesem Kapitel wird auf den Datensatz "mtcars" zurückgegriffen (vgl. Kapitel 5 für eine Beschreibung des Datensatzes). Einfaches Beispiel: Reichweite und PS

plot(mtcars$mpg, mtcars$PS)

Mit der Funktion plot() können die Daten auf verschiedene Art "geplottet" (erzeugt) werden.
Im Folgendem finden sich vier grundlegende Beispiele, hier zunächst der R-Befehl:

par(mfrow = c(2,2))

plot(mtcars$mpg, main = "plot(mtcars$mpg)")
plot(mtcars$mpg, mtcars$PS, main = "plot(mtcars$mpg, mtcars$PS)")
plot(factor(mtcars$am), main = "plot(factor(mtcars$am))")
plot(factor(mtcars$am), mtcars$PS, main = "plot(factor(mtcars$am), mtcars$PS)")

Hinweise zum Befehl:

  • Mittels par-Befehl werden die vier Grafiken zunächst matrixartig in einer Grafik mit zwei Zeilen (horizontal) und zwei Spalten (vertikal) zusammengefasst. Dieser Befehl kann auch weggelassen werden, um die Grafiken einzeln zu erzeugen.

  • Mit factor() wird in der dritten Grafik (unten links) eine kategoriale Variable erzeugt und ein Balkendiagramm mit den absoluten Häufigkeiten ausgegeben.

  • Die vierte Grafik (unten rechts) zeigt zwei Boxplots, d. h. die Verteilung der PS-Werte getrennt für Autos mit und ohne Automatik. Ein Boxplot ermöglicht gewisse Kennwerte einer Verteilung direkt aus einer Grafik abzulesen, bspw. Median (Strich innerhalb der Box), Ausreißer (im Beispiel zwei Punkte oberhalb), Spannweite (Länge des gesamten Box-Plots inklusive Ausreißer) oder Quartile (bspw. unteres Quartil ist Beginn der Box) .

Neben der wichtigen Funktion plot() existiert eine Vielzahl weiterer (elementarer) Grafikfunktionen.
Zum Beispiel:

  • barplot() → Balkendiagramm

  • pie() → Kreisdiagramm

  • boxplot()Boxplot

  • hist() → Histogramm

  • qqnorm() → Quantile-Quantile-Plot zur Prüfung auf Normalverteilung

6.3. Plot-Optionen (high level)

Für alle (elementaren) Grafikfunktionen gibt es sog. Optionen, mit denen die Grafiken verbessert werden können. Für die Funktion plot() sind u. a. folgende Optionen (high level) festlegbar:

  • main = "..." Titel

  • sub = "..." Untertitel

  • xlab = "..." x-Achsenbeschriftung

  • ylab = "..." y-Achsenbeschriftung

  • xlim = c(a, b) Wertebereich der x-Achse (von a bis b)

  • ylim = c(a, b) Wertebereich der y-Achse; c(b, a) um die Achse umzudrehen

  • axes = TRUE/FALSE Achsen anzeigen oder nicht

  • ann = TRUE/FALSE unterdrückt alle Beschriftungen

  • frame.plot = TRUE/FALSE Rahmen anzeigen oder nicht

  • type = "..." l = Linien, p = Punkte, usw.

Die wichtigsten Typen (Option "type") sind in der folgenden Grafik zusammengefasst, hier zunächst der Befehl:

par(mfrow = c(2,4))
plot(mtcars$mpg, type = "l", main = "type = \"l\"")
plot(mtcars$mpg, type = "p", main = "type = \"p\"")
plot(mtcars$mpg, type = "b", main = "type = \"b\"")
plot(mtcars$mpg, type = "o", main = "type = \"o\"")
plot(mtcars$mpg, type = "h", main = "type = \"h\"")
plot(mtcars$mpg, type = "c", main = "type = \"c\"")
plot(mtcars$mpg, type = "s", main = "type = \"s\"")
plot(mtcars$mpg, type = "S", main = "type = \"S\"")

Zum besseren Einarbeiten in "die Welt der Optionen und Parameter" ist die R-Dokumentation (R-Hilfe) empfehlenswert, da dort die o. g. Optionen und weitere Parameter erläutert werden. Beispiel: Hilfe zur Funktion plot()

help(plot)

Im o. g. Beispiel "Reichweite und PS" bietet es sich bspw. an, dass eine Überschrift (main) und Achsenbeschriftungen (xlab, ylab) eingefügt werden. Hier der entsprechend ergänzte Befehl:

plot(mtcars$mpg, mtcars$PS,
main = "Meilen pro US-Gallone vs. PS",
xlab = "Meilen pro US-Gallone",
ylab = "PS")

6.4. Plot-Parameter (low level)

Neben den erläuterten Optionen (high level) gibt es eine große Vielzahl an Parametern (low level) mit denen Grafiken und deren Ausgabe weiter verbessert werden können. Für einen ersten Überblick eignet sich auch die R-Hilfe, die hier aus Platzgründen nicht als Screenshot dargestellt wird.

help(par)

Vorab lässt sich sagen, dass Parameter folgende Grafikelemente betreffen:

  1. Linien und Punkte

  2. Definition von Schrift und Zeichen

  3. Achsen

  4. Grafik-Aufteilung

Häufig verwendete Grafikparameter sind bspw.:

  • pch → Punkt-Zeichen

  • lty → Linientyp

  • lwd → Linienstärke

  • cex → Textgröße

  • col → Farbe von Grafikelementen

  • mfrow bzw. mfcol → multiple Grafiken (= mehrere Grafiken in einer Grafik vereint)

Anbei findet sich das Beispiel "Reichweite und PS" unter Verwendung der Parameter col und pch.
Hier der (nochmals) ergänzte Befehl:

plot(mtcars$mpg, mtcars$PS,
main = "Meilen pro US-Gallone vs. PS",
xlab = "Meilen pro US-Gallone",
ylab = "PS",
col = "blue",
pch = 15)

text(15, 335, "Maserati Bora", adj = c(-0.1, 0.5))

Hinweise zum Befehl:

  • Mittels col = "blue" und pch = 15 werden aus den schwarzen Kreisen nun blaue Vierecke.

  • Mittels der Funktion text() wird der Datenpunkt (15, 335) beschriftet und der Beschriftungstext "Maserati Bora" mittels adj etwas nach rechts vom blauen Viereck (= Datenpunkt) gesetzt. Die Funktion text() wird bei vielen Grafiken standardmäßig genutzt (und fällt aus dem hier vorgestellten high- und low-level-Schema etwas heraus, weil sie keine primäre Grafikfunktion ist).