library(tidyverse)
library(gapminder)
3 Einführung in die Darstellung von Daten
- Aufbau des Aufrufs der Funktion
ggplot()
kennen - fünf wichtigste Grafiktypen kennen und einsetzten
3.1 Aufbau eines Darstellungsbefehls
Das Paket ggplot2
ist ein sehr mächtiges Visualisierungswerkzeug. Der Name steht für “the grammar of graphics”. Das bedeutet, dass man mithilfe von verschiedenen Funktionen in ggplot2
seine Grafik Schritt für Schritt aufbaut, wie einen (grammatikalisch korrekten) Satz. In aller Kürze bedeutet das:
Eine statistische Grafik ist eine Zuordnung (
mapping
) von Variablen in einem Datensatz (data
) zu (ästhetischen) Attributen (aes
) von geometrischen Objekten (geom
).
Wir müssen also für die Darstellung von Daten R Folgendes mitteilen:
data
: der Datensatz, der die Variablen enthält, die wir darstellen möchten.aes
: (ästhetische) Attribute für die geometrischen Objekte, die dargestellt werden sollen. Diese Attribute sind, z. B. die \(x\)- und \(y\)-Koordinaten, Farbe, Form und Größe der geometrischen Objekte.geom
: geometrische Objekte, die dargestellt werden sollen, z. B. Punkte, Linien, Boxen, Balken/Säulen etc.
Wir laden zunächst die nötigen Bibliotheken.
Anschließend filtern wir den Datensatz gapminder
, um nur die Daten aus dem Jahr 2007 zu behalten. Der Code filter(year == 2007)
bedeutet, dass wir nur die Zeilen aus dem Datensatz behalten wollen, in denen in der Variable year
2007 steht.
<- gapminder %>%
gapminder2007 filter(year == 2007)
Wir überzeugen uns davon, dass es geklappt hat 😄. Blättern Sie durch den Datensatz und überprüfen Sie die Werte in der Variablen year
.
gapminder2007
3.2 Streudiagramm
Ein typischer Befehl zur Visualisierung eines Streudiagramms würde so aussehen:
ggplot(data = gapminder2007,
mapping = aes(x = gdpPercap, y = lifeExp, color = continent)) +
geom_point()
In Worten könnte man es vielleicht wie folgt umschreiben:
Nimm den Datensatz
gapminder2007
(data = gapminder2007
) undOrdne folgende Attribute zu:
- auf die \(x\)-Achse die Variable
gdpPercap
(x = gdpPercap
) (Bruttoinlandsprodukt) - auf die \(y\)-Achse die Variable
lifeExp
(y = lifeExp
) (Lebenserwartung) - färbe ein mithilfe der Variablen
continent
(color = continent
).
- auf die \(x\)-Achse die Variable
Stelle das Ganze als geometrisches Objekt Punkte dar (
geom_point()
)
Sie sehen, dass diese Zuordnungen klar nach einer Legende verlangen, die dann auch automatisch erstellt wird. Merke: color
innerhalb der Funktion aes()
erstellt die Legende automatisch.
Die Anweisungen zur Visualisierung in ggplot2
werden mit einem +
verbunden. Man kann (und in diesem Fall soll) weitere Anweisungen geben. Z. B. sind die Beschriftungen der beiden Achsen so nichtssagend und müssen verbessert werden. Wir hängen mit einem +
-Zeichen weitere Befehle hinzu:
ggplot(data = gapminder2007,
mapping = aes(x = gdpPercap, y = lifeExp, color = continent)) +
geom_point() +
labs(x = 'Bruttoinlandsprodukt pro Einwohner (US$, inflationsbereinigt)',
y = 'Lebenserwartung bei der Geburt (Jahre)',
color = 'Kontinent',
title = 'Daten von Gapminder für das Jahr 2007',
caption = 'http://www.gapminder.org/data/')
3.3 Weitere geoms
Das geom_point()
produziert ein Streudiagramm, auch XY-Diagramm (scatter plot). Weiter wichtige Grafiktypen sind:
geom_line()
: Liniengeom_bar()
: Balken
3.4 Liniendiagramm
Es ergibt wenig Sinn, die obere Grafik mit Linien darzustellen. Allerdings eignen sich Linien ausgezeichnet, um einen zeitlichen Verlauf zu visualisieren. Daher filtern wir aus dem Datensatz gapminder
die Zeitreihen für Frankreich und Deutschland heraus. Weil wir jetzt zwei Länder haben möchten, muss beim Filtern ein Vektor mit Ländernamen angegeben werden und statt ==
der Operator %in%
. Wir werden später noch ausführlich auf diese Operatoren zurückkommen.
<- gapminder %>%
france_germany filter(country %in% c('France', 'Germany'))
ggplot(data = france_germany,
mapping = aes(x = year, y = gdpPercap, color = country)) +
geom_line()
3.5 Balkendiagramm
Wie viele Länder gibt es pro Kontinent im Jahr 2007? Das Balkendiagramm zählt für uns die Einträge im Datensatz zusammen. Es stellt also dieselben Daten dar, die eine Häufigkeitstabelle enthalten würde.
ggplot(data = gapminder2007,
mapping = aes(x = continent)) +
geom_bar()
3.6 Lesestoff
Kapitel 2.1 in Ismay and Kim (2021)
3.7 Hausaufgaben
3.7.1 Darstellung von großen Zahlen
Wir verändern die Grafik aus Kapitel 3.2 so, dass die Symbole nach der Größe der Einwohnerzahl skaliert werden. Dazu benutzen wir ein neues Argument in der Funktion aes(size = pop)
:
ggplot(data = gapminder2007,
mapping = aes(x = gdpPercap, y = lifeExp, color = continent, size = pop)) +
geom_point() +
labs(x = 'Bruttoinlandsprodukt pro Einwohner (US$, inflationsbereinigt)',
y = 'Lebenserwartung bei der Geburt (Jahre)',
color = 'Kontinent',
title = 'Daten von Gapminder für das Jahr 2007',
caption = 'http://www.gapminder.org/data/')
Die Einwohnerzahlen sind sehr groß. Daher stellt R sie in der sogen. wissenschaftlichen Notation dar. Dabei steht z. B. e+08 für \(10^8\). Das heißt 2.5e+08 sind 250000000 Einwohner.
Beschriften Sie die Legende für die Größe der Symbole richtig, indem Sie size = 'Einwohnerzahl'
in der Funktion labs()
hinzufügen.
3.7.2 Grafiken richtig beschriften
Bis auf die Grafik in Kapitel 3.4 fehlen bei den Grafiken oben ordentliche Achsenbeschriftungen und Titel für die Legenden. Ergänzen Sie den Code entsprechend.
3.7.3 Ihre Arbeit einreichen
Reichen Sie die Aufgabe aus Kapitel 3.7 bei fiete.ai ein und erhalten Sie feedback:
3.8 Vertiefung ggplot2 auf datacamp
Bearbeiten Sie das Kapitel 1 im Kurs “Introduction to Data Visualization with ggplot2” auf datacamp.