Karten mit ggplot2

Aktualisiert: 10. Sept 2020

Visualisierungen helfen Sachverhalte schnell zu verdeutlichen. Bei Daten mit geografischem Bezug nutzen wir daher Karten. In diesem Beitrag zeigen wir, wie schnell eine solche Karte erstellt werden kann. Dazu nutzen wir hauptsächlich

ggplot2. Das RStudio kann verwendet werden, muss aber nicht.


Eine Karte zur Visualisierung der Unfallhäufigkeit


Unser Beispieldatensatz ist die Unfallstatistik von 2018, welche dem Unfallatlas zugrundeliegt. Die Karte haben wir vom Open Data Portal des Bundesamts für Kartografie und Geodäsie bezogen (Digitales Landschaftsmodell). Zunächst landen wir die benötigten Bibliotheken.

library(ggplot2)
library(rgdal)
library(raster)


Daten vorbereiten


Beide Datensätze arbeiten mit dem UTM32-Korrdinatensystem. Daher wird keine Transformation der Projektion notwendig.

Unfallorte2018_LinRef <- read.csv2("~/Unfallorte2018_LinRef.txt", row.names=1)

shp <- readOGR(dsn = "~/ge250.utm32s.shape/ge250/ror250/ROR250.shx", stringsAsFactors = F)

Betrachten wir nun die Datensätze:

summary(Unfallorte2018_LinRef)


str(Unfallorte2018_LinRef)
Struktur des Datensatzes "Unfallorte" mittels str()-Befehl
Struktur des Datensatzes "Unfallorte"

Das sieht soweit okay aus. Wir schauen uns nun noch an, wie die Unfallorte verteilt sind und ob es Auffälligkeiten an den Positionsdaten gibt.


plot(Unfallorte2018_LinRef$LINREFX, Unfallorte2018_LinRef$LINREFY)

Schnelle Ansicht der geographischen Daten (Unfallorte) mit dem R-base plot()-Befehl
Schnelle Ansicht der geographischen Daten (Unfallorte)


Hier wird deutlich, dass zwei Bundesländer keine Daten in den Unfallatlas übergeben haben. Es gibt keine Daten in Thüringen, Mecklenburg-Vorpommern und Nordrhein-Westfalen. An dieser Stelle werden wir das Problem nicht weiter beachten und mit den vorhandenen Daten weiterarbeiten.


Shape-File erzeugen und ansehen


Nun fehlt noch die Shape-File, welche uns die Umrisse der Landkreise liefern soll. Diese haben wir bereits als shp in den Workspace geladen.


Schauen wir uns die Daten doch gleich mit ggplot2 an:

map <- ggplot() + geom_polygon(data = shp, aes(x = long, y = lat, group = group), colour = "black", fill = NA)
map + theme_void()


Schnelle Ansicht der shapefile mit den Landkreis-Polygonen
Schnelle Ansicht der shapefile mit den Landkreis-Polygonen


Visualisieren


Nachdem wir nun die Landkreise als Polygone und die Unfälle als Punkte zeichnen können, wird es Zeit beide Datensätze zusammen zu visualisieren. Unser Fokus soll auf Unfällen mit Beteiligung von Radfahrern liegen. Diese werden wir orange einfärben. Die übrigen Unfälle werden wir in einem sehr hellen grau ebenfalls einzeichnen.

## Unfälle zeichnen
# Rad-Beteiligung hervorheben
 unfallorte_rad <- 
  ggplot() + 
  geom_point(data = data.frame(Unfallorte2018_LinRef), aes(x = LINREFX, y = LINREFY, color = as.logical(IstRad), alpha = IstRad + 0.1), size = 0.005) 

## Landkreise einzeichnen
## Farben für die Einfärbung der Punkte setzen. 
## Weitere Layout-Optionen hinzufügen
unfallorte_rad + 
  geom_polygon(data = shp, aes(x = long, y = lat, group = group), colour = "cornsilk3", alpha = 0.5, fill = NA)+ 
  theme_void() + 
  scale_color_manual(values = c("#999999", "#E69F00")) + 
  theme(legend.position =  "none")
Die Grafik vereint die Informationen über die Fahrrad-Beteiligung, den Unfallort und die Landkreis-Informationen
Endgültige Visualisierung der Unfalldaten

Fazit


Ein Bild sagt mehr als 1000 Worte. In desem Beitrag haben wir gezeigt wie einfach eine Visualisierung von geographischen Daten mit ggplot2 möglich ist. Es kann vorkommen, dass geographische Daten in verschiedenen Projektionen vorliegen. Dann wird einige Arbeit in die Datenvorbereitung fließen. Ist dieser Part allerdings vollzogen, geht das Visualisieren sehr zügig. Vor allem durch den Einsatz von ggplot2.

13 Ansichten

Aktuelle Beiträge

Alle ansehen