Natürlich können viele Charts auch schon mit Base-R erstellt werden, aber ggplot2 hat durch die „grammar of graphics“ eine etwas klarere Struktur. Man programmiert eher, wie der Graph aussehen soll (deklarativ) und weniger, welche Schritte man machen muss (iterativ). Wer möchte, kann auf Englisch über die Vor- und Nachteile in den Artikeln „Why I use ggplot2“ von David Robinson oder „Why I don’t use ggplot2“ von Jeff Leek nachlesen. Meiner Meinung nach lohnt es sich aber auf jeden Fall, die Syntax von ggplot2 zu lernen.
Inhalt
Das R-Package ggplot2 installieren
Sofern Du eine Internet-Verbindung hast, wie alle Packages mit der Funktion install.packages, also
install.packages("ggplot2")
Bei Packages ist es so, dass sie einmalig installiert werden müssen. Willst Du deren Funktionen dann in einem R-Skript verwenden, bindest Du das Package mit library oder require am Anfang vom Skript ein. Hierbei sind die Anführungsstriche nicht mehr nötig.
library(ggplot2) #oder require(ggplot2)
Scatterplots bzw. Punktwolken mit ggplot2
Eine Punktwolke (Scatterplot) stellt ist einfach eine Ansammlung von Punkten, welcher aus zwei Werten besteht. Jeder Punkt wird in einem Koordinatensystem dargestellt, indem der eine Wert auf der x-Achse und der andere auf der y-Achse abgetragen wird.
Scatterplots sind gut geeignet, um die Beziehung zwischen zwei Variablen zu visualisieren. Haben wir zum Beispiel einen Datensatz, in dem Größe und Gewicht von Studienteilnehmern erhoben wurden, können wir die Größe auf die x-Achse und das Gewicht auf die y-Achse legen. Jeder Punkt entspricht dabei einem Studienteilnehmer, also einer Zeile in unserem Datensatz. Haben wir verschiedene Gruppen (z.B. Treatment- und Kontrollgruppe), können wir die Punkte entsprechend färben, um Unterschiede zu verdeutlichen.
Scatterplots funktionieren nur bei metrischen Merkmalen gut. Haben wir zum Beispiel zwei ordinale Merkmal mit jeweils 3 Ausprägungen, würden alles Punkte mit denselben Ausprägungen übereinanderliegen. Man kann umgehen, indem man die Punkte zufällig ein bisschen verschiebt. Meistens ist aber ein Bubblechart besser geeignet, indem nur ein Punkt (eine Bubble) gezeichnet wird, dessen Größe aber der Anzahl der Datensätze mit dieser Ausprägung entspricht.
In ggplot2 zeichnet man ein Scatterplot mit geom_point(). Die Variablen, die wir auf die x- und y-Achse legen wollen, werden in der Hauptfunktion in den aesthetics angegeben.
n <- 100 df <- data.frame(x = rnorm(n), y = rnorm(n, sd=0.5)) ggplot(df, aes(x = x, y=y)) + geom_point()

n <- 100 df <- data.frame(x = rnorm(n), y = rnorm(n, c(0,1), 0.5), gruppe = 1:2) ggplot(df, aes(x = x, y=y, color=as.factor(gruppe))) + geom_point() + labs(color = "Gruppe")

Ein Barplot in R erstellen – Säulendiagramme und Balkencharts
Mit Barplot meint man Balken- oder Säulendiagramm. Das Säulendiagramm hat vertikale Säulen, das Balkendiagramm ist um 90° gedreht und hat dementsprechend horizontale Balken. Jede Säule/Balken steht für eine Kategorie. Die Höhe der Säule bzw. Länge des Balkens entspricht dem Wert, den man visualisieren will, zum Beispiel den Umsatz.
Meistens lässt sich ein Säulendiagramm intuitiv erfassen. Bei vielen Kategorien bzw. langen Kategorienamen ist das Balkendiagramm besser geeignet.
In ggplot2 erzeugt man einen barplot mit geom_bar(). Fügt man keine Parameter hinzu, dann wird als Höhe die Anzahl der Datenpunkte mit der entsprechenden Ausprägung verwendet.
df <- data.frame(lieblingsfarbe = c("rot","grün","rot","blau","grün","blau","blau")) ggplot(df, aes(x = lieblingsfarbe)) + geom_bar()

df <- data.frame(lieblingsfarbe = c("rot","grün","rot","blau","grün","blau","blau")) ggplot(df, aes(x = lieblingsfarbe, fill = lieblingsfarbe)) + geom_bar() + scale_fill_manual(values = c("rot" = "darkred", "grün" = "darkgreen", "blau" = "darkblue"))

df <- data.frame(quartal = c("2021-Q1","2021-Q2","2021-Q3","2021-Q4"), umsatz = c(150000,180000,160000,200000)) ggplot(df, aes(x = quartal, y = umsatz)) + geom_bar(stat = "identity")

LERNE DATA SCIENCE mit R
Ein Data Science Experte ist in der heutigen datengetriebenen Welt viel gefragt. Mit der entsprechenden Erfahrung kann man sich den gutbezahlten, interessanten Job aussuchen. In meinem Onlinekurs Data Science mit R lernst Du die Grundlagen.
Balkendiagramm in R
Wie gesagt ist ein Balkendiagramm nur ein um 90° gedrehter Säulenchart, wir können also den gleichen Befehl zum Erstellen eines barplots in R nutzen und vertauschen dann einfach nur die Achsen. Das geht über den Befehl coord_flip().
df <- data.frame(quartal = c("2021-Q1","2021-Q2","2021-Q3","2021-Q4"), umsatz = c(150000,180000,160000,200000)) ggplot(df, aes(x = quartal, y = umsatz)) + geom_bar(stat = "identity") + coord_flip()

Ein Chart aus ggplot als Datei abspeichern
Es gibt zwei Möglichkeiten, ein Diagramm als Datei abzuspeichern. Entweder benutzt man die in R eingebauten Funktionen, die auch für die Base-R-Grafiken verwendet werden oder man ruft die Funktion ggsave() auf.
Grafik mit ggplot speichern
Ggplot liefert die Funktion ggsave() mit, um ein Diagramm in eine Datei zu schreiben. Der minimale Aufruf bekommt einfach nur einen Dateinamen. Ggsave erkennt an der Endung das Format und speichert den letzten Plot in die Datei. Man kann aber natürlich mehr Parameter übergeben:
- filename: der Dateiname
- plot: die Variable, die das Diagramm enthält
- path: Ordner, in dem die Datei gespeichert werden soll
- width, height, units, dpi: Mit diesen 4 Parametern kann man die Größe des Charts definieren. Unit kann dabei als „in“, „cm“, „mm“ oder „px“ gewählt werden. Dpi (dots per inch) gibt die Auflösung an, also zum Beispiel 300 für gute Druckqualität
- scale: Alternativ bzw. zusätzlich kann noch ein Skalierungsfaktor angegeben werden. Wählt man zum Beispiel scale=2, dann verdoppelt man die Größe der Grafik.
g <- ggplot(df, aes(x = quartal, y = umsatz)) + geom_bar(stat = "identity") + coord_flip() g # minimaler Aufruf: speichert das letzte Diagramm ggsave("grafik.png") # und hier mit einigen Parametern versehen ggsave(filename="grafik.png", plot=g, width=6, height=4, unit="cm", dpi=300)
Grafik mittels Base-R speichern
Der in Base-R vorgesehene Weg, eine Grafik zu speichern, sieht vor, zuerst ein sogenanntes „graphic device“ zu öffnen, dann über print die Grafik dorthin zu drucken und dann das device wieder zu schließen. So ein Device ist im Prinzip einfach eine Verbindung zu einer Datei und gibt es für viele verschiedene Formate:
- pdf(“grafik.pdf”)
- svg(“grafik.svg”)
- png(“grafik.png”)
- jpeg(“grafik.jpg”)
- tiff(“grafik.tiff”)
Mit dev.off() wird das device wieder geschlossen.
Im Ganzen sieht das dann so aus. Wir erstellen ein ggplot-Diagramm und speichern es in der Variable g. Das Device wird geöffnet, g gedruckt und das Device wieder geschlossen
g <- ggplot(df, aes(x = quartal, y = umsatz)) + <br /> geom_bar(stat = "identity") + <br /> coord_flip()<br />g</p> <p>svg("grafik.svg")<br />print(g)<br />dev.off()
Ggplot2 color – So änderst Du die Farbe
Je nach Diagramm-Typ lässt sich die Farbe mit den Parametern fill und/oder color verändern. Die Farbe könnt ihr entweder als Wort wie „darkred“ oder über den Hex-RGB-Code „#AA00BB“ angeben. Die in R definierten Farbworte findet ihr zum Beispiel in diesem PDF der Columbia University.
Der Hex-Code setzt sich aus den drei Farben Rot, Grün und Blau zusammen, die jeweils Werte von 0-255 haben. Damit die Zahl aber zweistellig bleibt, benutzt man das Hexadezimal- (16er-)System. Da folgt auf die Ziffern 0-9 noch die Buchstaben A, B, C, D, E, F. Nach 9 kommt also nicht 10, sondern A. Aber keine Sorge, fast jedes Grafikprogramm kann den Hexcode ausgeben. Es gibt auch Browser-Plugins, die das können.
Bei mehreren Farben, zum Beispiel für verschiedene Gruppen, könnt ihr auf vordefinierte Paletten zugreifen oder die Farben selber definieren. Letzteres haben wir oben schon im Lieblingsfarben-Beispiel gehabt. Das geht über die Funktion scale_fill_manual bzw. scale_color_manual.
Das Package RColorBrewer liefert viele Farbpaletten mit. Diese können per + scale_fill_brewer(palette=“Palettenname“) aktiviert werden.

Welche ggplot2 themes gibt es?
Ggplot kommt mit einigen Standard-Themes, die aber natürlich alle weiter angepasst werden können.
- theme_grey() bzw. theme_gray(): Das Standard-Theme von ggplot2 mit grauem Hintergrund und weißen Gitterlinien
- theme_bw(): weißer Hintergrund, keine Gitterlinien und schwarzer Rahmen um die Grafik
- theme_linedraw(): wie theme_bw, aber mit schwarzen Gitterlinien
- theme_light(): wie theme_linedraw, aber Rahmen und Gitterlinien sind hellgrau
- theme_dark(): wie theme_light, aber mit dunkelgrauem Hintergrund
- theme_minimal(): minimalistisch, weißer Hintergrund, weder Rahmen, Achsen noch Gitterlinien
- theme_classic(): weißer Hintergrund, schwarze Achsen
- theme_void(): leeres Theme, um darauf weiter aufzubauen
Mit dem theme()-Befehl könnt ihr alles so verändern, wie ihr es benötigt. Es ist allerdings ein bisschen aufwändig, da man logischerweise jede Änderung definieren muss. Man kann sich aber auch ein theme definieren und in einer Variablen abspeichern. Beim ggplot-Aufruf fügt man dann einfach die Variable hinzu. Doch dazu ein anderes Mal mehr.
Das waren nur einige wenige Aspekte von ggplot2. Es gibt aber unzählige Charttypen und Individualisierungsoptionen.
Happy charting,
Euer Holger
LERNE DATA SCIENCE mit R
Ein Data Science Experte ist in der heutigen datengetriebenen Welt viel gefragt. Mit der entsprechenden Erfahrung kann man sich den gutbezahlten, interessanten Job aussuchen. In meinem Onlinekurs Data Science mit R lernst Du die Grundlagen.
Top Seite