Eine kurze Einführung in das Paket ggplot2 für RStudio

0
1232
Praktikum

Wer tolle Grafiken in RStudio erstellen will, kommt an ggplot2 eigentlich nicht vorbei. Es gehört zu den mächtigsten und umfangreichsten Pakten zur Erstellung von Grafiken — es gibt eigentlich keine Grafik, die man nicht mit ggplot2 erstellen könnte. Wer hier aber nur an „einfache“ zweidimensionale Grafiken denkt, hat weit gefehlt. Mit ggplot2 lassen sich mehrere Skalen auf einmal in einem Diagramm darstellen, was man theoretisch soweit treiben könnte, dass sich keiner mehr auskennt; aber das soll natürlich nicht sein, der Vorteil liegt schließlich darin, viele Daten übersichtlich darzustellen.

Begriffe in ggplot2

Zuerst ein paar Grundlagen. Im Prinzip lassen sich die Diagramme im Baukastensystem erstellen, wenn man es einmal verstanden hat, ist dies auch relativ leicht.

  1. Data: Welche Daten wollt ihr visualisieren? Ihr solltet euch genau überlegen, welche Variablen ihr wie präsentieren wollt.
  2. Geoms: Ausgeschrieben auch geometrische Objekte. Wollt ihr Punkte, Linien, Polygone, …?
  3. Mappings: Hier könnt ihr für eure geometrischen Objekte ästhetische Attribute festlegen.
  4. Scales: Abbildung der Merkmalsausprägungen auf „physikalische Einheiten“ der geometrischen Objekte (z. B. Form, Durchmesser oder Farbe); definiert die Legende.
  5. Coord: Hier könnt ihr das Koordinatensystem in der Darstellung verändern, wie Achsen und Giternetzlinien.
  6. Faceting: Damit könnt ihr Datenmengen unterteilen, z. B. wenn ihr Daten für 2014 und 2015 habt und diese in zwei Grafiken nebeneinander darstellen wollt.
  7. Stats: Ist nützlich, wenn ihr eure Daten nochmal statistisch transformieren wollt, bevor ihr sie darstellen lasst.

Beispiele

Damit ihr alles selbst üben könnt, verwenden wir den Datensatz mpg aus dem Paket datasets, und natürlich installieren und laden wir das Paket ggplot2.

[box]

install.packages("ggplot2")    # ggplot2 wird installiert 
install.packages("datasets")   # datasets wird installiert
library(datasets) # nun laden wir beide Pakete
library(ggplot)

[/box]

Zu Beginn schauen wir einmal unseren Datensatz an:

[box]

head(mpg)

  manufacturer model displ year cyl      trans drv cty hwy fl   class
1         audi    a4   1.8 1999   4   auto(l5)   f  18  29  p compact
2         audi    a4   1.8 1999   4 manual(m5)   f  21  29  p compact
3         audi    a4   2.0 2008   4 manual(m6)   f  20  31  p compact
4         audi    a4   2.0 2008   4   auto(av)   f  21  30  p compact
5         audi    a4   2.8 1999   6   auto(l5)   f  16  26  p compact
6         audi    a4   2.8 1999   6 manual(m5)   f  18  26  p compact

[/box]

Jetzt erstellen wir eine simple Grafik, die aber noch nicht funktionieren wird, da wir noch kein Geoms definiert haben.

[box]

# x = Hubraums (displ), y = Verbrauch auf der Autobahn (hwy)
grafik <- ggplot(mpg, aes(x = displ, y = hwy)) 
grafik
## Error: No layers in plot

[/box]

Also suchen wir uns nun eine Grafikvariante aus, die wir haben möchten. Eine Übersicht über alle Möglichkeiten findet ihr hier:

http://docs.ggplot2.org/current/

Wir nehmen aber erst einmal ein einfaches Streudiagramm (Zeile 1).

Im zweiten Schritt (Zeile 2) fügen wir noch eine Achse hinzu, die die Anzahl der Zylinder darstellen soll, wobei die Größe des Kreises für die Anzahl an Zylinder steht. Automatisch wird auch gleich eine Legende hinzugefügt, damit jeder weiß, was dargestellt wird.

[box]

1. grafik + geom_point(alpha = 0.3)     # einfaches Streudiagramm

[/box]
[lightbox_image src=“http://www.psystudents.org/wp-content/uploads/2015/12/Streudiagramm.jpeg“ bigimage=“http://www.psystudents.org/wp-content/uploads/2015/12/Streudiagramm.jpeg“ title=“Streudiagramm“]

2. grafik + geom_point(aes(size = cyl), alpha = 0.3) # Streudiagramm + Kreise für Zylinder

[lightbox_image src=“http://www.psystudents.org/wp-content/uploads/2015/12/Streudiagramm-plus-Kreise.jpeg“ bigimage=“http://www.psystudents.org/wp-content/uploads/2015/12/Streudiagramm-plus-Kreise.jpeg“ title=“Streudiagramm mit dritter Achse“]

Natürlich könnten wir unsere Daten auch als Boxplot darstellen lassen:

ggplot(mpg, aes(class, displ)) + geom_boxplot()

[lightbox_image src=“http://www.psystudents.org/wp-content/uploads/2015/12/Boxplot.jpeg“ bigimage=“http://www.psystudents.org/wp-content/uploads/2015/12/Boxplot.jpeg“ title=“Boxplot“]

Wir können auch noch weitere Daten im Diagramm anzeigen lassen, z. B. den Mittelwert der angegebenen Hubräume. Diesen lassen wir in der Farbe Grün mit einer dünnen Linie (size = 1) darstellen. Außerdem speichern wir diese als grafik2 ab.

grafik2 <- ggplot(mpg, aes(class, displ)) + geom_hline(aes(yintercept = m), 
data = data.frame(m = mean(mpg$displ)), colour = "green", size = 1) 
+ geom_boxplot()

[lightbox_image src=“http://www.psystudents.org/wp-content/uploads/2015/12/Boxplot-mit-Mittelwert.jpeg“ bigimage=“http://www.psystudents.org/wp-content/uploads/2015/12/Boxplot-mit-Mittelwert.jpeg“ title=“Boxplot mit Mittelwert der Hubräume“]

Wenn wir mit der Grafik zufrieden sind, bearbeiten wir anschließend die Achsen. Wir wollen natürlich, dass diese so benannt sind, wie wir wollen, und nicht, wie die Variablen heißen.

grafik2 + theme_bw() + theme(panel.grid.major = element_line(color = "black",
linetype = "dotted"), legend.position = "none") + labs(x = "Klasse",
y = "Hubraum [l]", title = "Boxplot")

[lightbox_image src=“http://www.psystudents.org/wp-content/uploads/2015/12/Boxplot-benannt.jpeg“ bigimage=“http://www.psystudents.org/wp-content/uploads/2015/12/Boxplot-benannt.jpeg“ title=“Boxplot beschriftet“]

Jetzt nutzen wir die Facettierung, um unsere Daten in zwei Grafiken darzustellen. Den Hubraum und Verbrauch sowie die Anzahl der Zylinder wollen wir dabei nach Jahr unterscheiden (1999 vs. 2008). Außerdem benennen wir die Achsen auch gleich wieder so, wie wir sie brauchen, und fügen die Legende unter dem Diagramm ein.

grafik3 <- ggplot(mpg, aes(displ, hwy, colour = factor(cyl))) + geom_point() +
 facet_grid(. ~ year)
grafik3 + theme_bw() + theme(panel.grid.major = element_line(color = "black",
 linetype = "dotted", ), legend.position = "bottom") + labs(x = "Zylinder",
 y = "Verbrauch [mpg]", title = "Streudiagramm") + scale_colour_brewer(name = "Zylinder")

[lightbox_image src=“http://www.psystudents.org/wp-content/uploads/2015/12/Streudiagramm-nach-Jahr.jpeg“ bigimage=“http://www.psystudents.org/wp-content/uploads/2015/12/Streudiagramm-nach-Jahr.jpeg“ title=“Streudiagramm nach Jahr aufgeteilt“]

Wenn ihr nun Lust auf ggplot2 bekommen habt und ein paar Grafiken erstellt, lasst sie uns doch mal zukommen! Wir freuen uns auf jede Einsendung. =)