1.7 Karten in R & catch up

1.7.1 Hintergrund

Im Laufe des Kurses haben Sie wiederholt ggplot2 verwendet, um verschiedene Objekte darzustellen. Heute werden wir den Kurs dazu nutzen, das Potenzial von ggplot2 für Karten weiter zu erforschen.

1.7.2 Lernziele

Nach dieser Übungseinheit könnt ihr:

  1. die wichtigsten Funktionen zur Anpassung von Plots in ggplot2 bei der Darstellung von räumlichen Daten nennen

  2. ansprechender Plots von räumlichen Objekten in ggplot2 erzeugen

  3. die wichtigsten Methoden für interaktive Plots in R nennen

1.7.3 Literatur

  1. Geocomputation in R, chapter 9. https://r.geocompx.org/

1.7.4 Notwendige Vorbereitung

Keine

1.7.5 Tutorial

1.7.6 I.2 - ggplot2

1.7.7 Hintergrund

In dieser Übung werden wir das Konzept der Grammatik der Grafik (grammar of graphics) und das ggplot2-Pakets in R kennenlernen. Die Grammatik der Grafik ist ein leistungsfähiges Rahmenwerk und bietet einen systematischen Ansatz für die Abbildung von Daten.

Los gehts!

1.7.8 Lernziele

Nach dieser Übungseinheit könnt ihr:

  1. Einfache Abbildungen mit ggplot2 erstellen.

1.7.9 Inhalt

Die “grammar of graphics” ist ein von Leland Wilkinson eingeführtes Konzept, das die Komponenten und Prinzipien bei der Erstellung von Datenvisualisierungen beschreibt. Sie bietet eine Reihe von Richtlinien für die Zerlegung von Visualisierungen in Schichten, die Zuordnung von Variablen zu ästhetischen Eigenschaften und die Erleichterung der explorativen Datenanalyse.

Zu den wichtigsten Komponenten der Grammatik der Grafik gehören:

  1. Data: Der Datensatz, der die Variablen von Interesse enthält.
  2. Aesthetics: Die visuellen Eigenschaften, die die Variablen darstellen, wie Farbe, Form und Größe.
  3. Geometries: Die geometrischen Formen, die zur Darstellung von Datenpunkten verwendet werden, wie z. B. Punkte, Linien und Balken.
  4. Scales: Die Zuordnungen zwischen Datenwerten und ästhetischen Eigenschaften, die eine genaue Darstellung ermöglichen.
  5. Facets: Aufteilung der Daten in Teilmengen und Erstellung separater Visualisierungen für jede Teilmenge.
  6. Statistics: Transformieren der Daten, um neue Variablen zu erstellen oder Daten innerhalb von Gruppen zusammenzufassen.
  7. Coordinates: Das Koordinatensystem, das bestimmt, wie Datenpunkte im Raum platziert werden.
  8. Themes: Der allgemeine visuelle Stil und das Aussehen des Diagramms.

1.7.10 Literatur

Wickham H, Cetinkaya-Rundel M & Grolemund G (2023) R for Data Science. Kapitel 1 & 9.

1.7.11 Notwendige Vorbereitung

Keine.

1.7.12 Tutorial

1.7.12.1 Einrichten der Umgebung, und laden von libraries und Daten

Ladet als erstes die nötigen libraries. Für die Grundlagen verwenden wir wiederden palmerpenguins Datensatz.

# Load required packages
library(palmerpenguins)
data(penguins)
library(ggplot2)
library(readr)
library(dplyr)

1.7.12.2 Streudiagramms

Ein Streudiagramm ist eine nützliche Visualisierung, um die Beziehung zwischen zwei kontinuierlichen Variablen zu untersuchen. Wir können die Funktion geom_point verwenden, um ein Streudiagramm in ggplot2 zu erstellen.

Erstellen wir ein Streudiagramm des Pinguin-Datensatzes, indem wir die Schnabellänge auf die x-Achse und die Körpermasse auf die y-Achse abbilden.

# Streudiagramm
scatter_plot <- ggplot(data = penguins, aes(x = bill_length_mm, y = body_mass_g)) +
  geom_point()

# Anzeige
scatter_plot

1.7.12.3 Erstellen eines Balkendiagramms

Ein Balkendiagramm ist eine gängige Visualisierung für den Vergleich kategorischer Variablen oder die Zusammenfassung von Daten innerhalb von Gruppen. Wir können die Funktion geom_bar() verwenden, um ein Balkendiagramm in ggplot2 zu erstellen.

Erstellen wir ein Balkendiagramm des Pinguin-Datensatzes, das die Anzahl der Pinguine nach Arten visualisiert.

# Balkendiagramm
bar_chart <- ggplot(penguins, aes(x = species)) +
  geom_bar()

# Anzeige
bar_chart

1.7.12.4 Box-Plots

Ein Boxplot ist nützlich, um die Verteilung einer kontinuierlichen Variable innerhalb verschiedener Kategorien zu visualisieren. Wir können die Funktion geom_boxplot() verwenden, um einen Boxplot in ggplot2 zu erstellen.

Erstellen wir einen Boxplot des Pinguin-Datensatzes, der die Verteilung der Körpermasse für jede Art zeigt.

# Create a box plot
box_plot <- ggplot(penguins, aes(x = species, y = body_mass_g)) +
  geom_boxplot()

# Display the box plot
box_plot

1.7.12.5 Plots anpassen

ggplot2 ermöglicht eine umfangreiche Anpassung von Plots, einschließlich Änderung der Ästhetik, Hinzufügen von Beschriftungen und Anpassung von Themen. Wir gucken uns jetzt noch einige Anpassungsoptionen für unsere Plots an. Ändern der Ästhetik

Wir können ästhetische Eigenschaften wie Farbe, Form und Größe ändern, um zusätzliche Variablen in unseren Diagrammen darzustellen. Ändern wir das Streudiagramm, um die Punkte je nach Art einzufärben.

# Aesthetics
modified_scatter_plot <- ggplot(penguins, aes(x = bill_length_mm, y = body_mass_g, color = species)) +
  geom_point()

# Anpassung
modified_scatter_plot

1.7.12.6 Hinzufügen von Beschriftungen

Wir können unseren Diagrammen informative Beschriftungen hinzufügen, einschließlich Achsenbeschriftungen, einen Titel und Beschriftungen. Fügen wir dem Streudiagramm Beschriftungen hinzu.

# Labels
plot_with_labels <- ggplot(penguins, aes(x = bill_length_mm, y = body_mass_g, color = species)) +
  geom_point() +
  labs(x = "Bill Length (mm)", 
       y = "Body Mass (g)", 
       title = "Scatter Plot of Bill Length and Body Mass", 
       caption = "Data Source: Palmer Penguins")

# Anzeigen
plot_with_labels

1.7.12.7 Themes anpassen

Ihr könnt verschiedene Themen auf eure Diagramme anwenden, um das Erscheinungsbild zu verändern. Wenden wir das Thema theme_minimal() auf unser Streudiagramm an. Eine Übersicht mit ggplot2 verfügbarer Themen findet ihr zum Beispiel hier: https://ggplot2.tidyverse.org/reference/ggtheme.html.

# theme
plot_with_theme <- ggplot(penguins, aes(x = bill_length_mm, y = body_mass_g, color = species)) +
  geom_point() +
  labs(x = "Bill Length (mm)", 
       y = "Body Mass (g)", 
       title = "Scatter Plot of Bill Length and Body Mass") +
  theme_minimal()

# Display the scatter plot with the applied theme
plot_with_theme

1.7.12.8 Anpassen von Karten in ggplot

Load the necessary libraries.

library(spData)
library(tidyverse)
library(sf)

Als Ausgangspunkt werden wir ggplot verwenden, um ein einfaches Diagramm mit dem world Datensatz aus dem Paket spData zu erstellen.

ggplot()+
  geom_sf(data = world)

Gut, aber weder informativ noch visuell ansprechend. Wir können Farbskalen verwenden, um eine dritte Variable darzustellen. Ihr könnt eine kontinuierliche Farbskala für kontinuierliche Variablen (in diesem Fall die Lebenserwartung) und eine kategorische Skala für kategorische Variablen verwenden. Beachtet, dass ihr Füllung und Farbe (die Umrandungslinien) separat ändern könnt. Wenn wir nichts angeben, wählt ggplot die Standardfarben.

# Kontinuierliche Variable
ggplot()+
  geom_sf(data = world, aes(color = lifeExp, fill = lifeExp))

# Kategorische Variable
ggplot()+
  geom_sf(data = world, aes(color = continent, fill = continent))

Es gibt eine Vielzahl von Optionen zur Anpassung der Farbgebung. Zum Beispiel über das viridis-Paket für kontinuierliche Variablen oder colour brewer für kategorische Variablen.

# Kontinuierliche Variable
ggplot()+
  geom_sf(data = world, aes(fill = lifeExp))+
  scale_fill_viridis_b()

# Kategorische Variable
ggplot()+
  geom_sf(data = world, aes(fill = continent, color = continent))+
  scale_fill_brewer(palette = "Accent")+
  scale_color_brewer(palette = "Accent")

Mit verschiedenen Funktionen können wir dem Plot einzelne Elemente hinzufügen.

ggplot()+
  geom_sf(data = world, aes(fill = continent, color = continent))+
  ggtitle("Continents of the world")+
  xlab("Longitude")+
  scale_fill_brewer(palette = "Accent")+
  scale_color_brewer(palette = "Accent")

Ihr könnt das allgemeine Erscheinungsbild mit der theme Funktion.

ggplot()+
  geom_sf(data = world, aes(fill = continent, color = continent))+
  ggtitle("Continents of the world")+
  xlab("Longitude")+
  scale_fill_brewer(palette = "Accent")+
  scale_color_brewer(palette = "Accent")+
  theme(legend.title = element_blank(),
        axis.title = element_text(size = 16),
        legend.position = "bottom")

Es gibt mehrere voreingestellte Themen, die ihr mit theme kombinieren könnt.

ggplot()+
  geom_sf(data = world, aes(fill = continent, color = continent))+
  ggtitle("Continents of the world")+
  xlab("Longitude")+
  scale_fill_brewer(palette = "Accent")+
  scale_color_brewer(palette = "Accent")+
  theme(legend.title = element_blank(),
        legend.position = "bottom")
  theme_bw()

Eine weitere wichtige Option ist die Aufteilung eines Plots nach einer anderen Variable (“facetting”), d. h. für jede Variable wird ein eigener Plot erstellt.

ggplot()+
  geom_sf(data = world, aes(fill = lifeExp, color = lifeExp))+
  ggtitle("Continents of the world")+
  xlab("Longitude")+
  scale_fill_viridis_c(option = "magma")+
  scale_color_viridis_c(option = "magma")+
  theme(legend.title = element_blank(),
        legend.position = "bottom")+
  theme_bw()+
  facet_wrap(continent~.)

1.7.13 Aufgaben

  1. Schreibt einen Einleitungsparagraph zum Thema der heutigen Übung.

  2. Erstellt ein Streudiagramm longitude v. latitude aus eurern iNaturalist Aufsammlungen, und färbt die Punkte für die verschiedenen User ein.

  3. Erstellt ein Balkendiagramm mit der Anzahl der Fundpunkte und Taxa je User.

  4. Ladet die Verbreitungsinformationen von POWO aus dem .shp file in R (von letzter Woche) & erstellt einen publikationsfähige Karte mit der Verbreitung eurer Gruppe.

  5. Schreibt einen Reflexionsparagraphen: Welchen Teil der heute erlernten MEthodik verstehe ich/nicht, und warum?