Landkarten in R mit dem Paket Maptools

Um Landkarten und damit Häufigkeiten oder andere statistische Kennzahlen grafisch darzustellen bietet sich R an. Im Folgenden beschreiben wir, wie mittels des Pakets maptools einfach und schnell Landkarten erstellt werden können. Mit

library(maptools)

laden wir das Paket.

Das Raster wird geladen

Weiterhin benötigen wir zunächst eine sogenannte Shape-Datei. Diese enthält das Raster für unsere Landkarte. Mit

shapes <- readShapeSpatial("vg2500_bld.shp")

laden wir die Shape-Datei. Hierbei können wir uns das Raster unserer Landkarte mit

plot(shapes)

anzeigen lassen und erhalten die folgende Grafik:

Bei unserem Raster handelt es sich um die Bundesrepublik Deutschland beziehungsweise um Ihre 16 Bundesländer. Möchten wir nun beispielsweise die Bevölkerungszahlen pro Bundesland visualisieren, so müssen wir die entsprechenden Zahlen unseren Bundesländern zuordnen. Diese Informationen, in welcher Reihenfolge die Bundesländer gespeichert sind, sind in dem eingelesenen Shape-Objekt in R zu entnehmen. Aus dieser Shape-Datei erhalten wir den Vektor der Bundesländer mit

shapes$GEN

[1] Hamburg Niedersachsen Bremen
[4] Nordrhein-Westfalen Hessen Rheinland-Pfalz
[7] Baden-W\xfcrttemberg Bayern Saarland
[10] Berlin Brandenburg Mecklenburg-Vorpommern
[13] Sachsen Sachsen-Anhalt Th\xfcringen
[16] Schleswig-Holstein
16 Levels: Baden-W\xfcrttemberg Bayern Berlin Brandenburg Bremen Hamburg ... Th\xfcringen

Mit der bekannten Reihenfolge der Bundesländer lässt sich nun zum Beispiel deren Bevölkerungszahl entsprechend zuordnen:

daten <- c( 1.7, 7.9, 0.6, 17.8, 6.1, 4, 10.8, 12.8 , 0.9, 3.5, 2.4, 1.6, 4, 2.2, 2.1, 2.8)

daten <- data.frame(shapes$GEN, daten)
daten
shapes.GEN daten
1 Hamburg 1.7
2 Niedersachsen 7.9
3 Bremen 0.6
4 Nordrhein-Westfalen 17.8
5 Hessen 6.1
6 Rheinland-Pfalz 4.0
7 Baden-W\xfcrttemberg 10.8
8 Bayern 12.8
9 Saarland 0.9
10 Berlin 3.5
11 Brandenburg 2.4
12 Mecklenburg-Vorpommern 1.6
13 Sachsen 4.0
14 Sachsen-Anhalt 2.2
15 Th\xfcringen 2.1
16 Schleswig-Holstein 2.8

Weiterhin empfiehlt es sich das Paket RColorBrewer zu laden. Mit diesem lassen sich bequem Farbpaletten erzeugen.

library(RColorBrewer)

Wir wollen eine blaue Farbpalette mit 6 Stufen.

farben <- brewer.pal(6, "Blues")

Weiterhin klassieren wir unsere Einwohnerzahlen geeignet

farben.nr <- cut(daten[,2], c(-1, 1, 2, 3, 6, 10, 18))

und geben diesen Klassen mit dem nächste Befehl Namen.

levels(farben.nr) <- c("bis 1 mio.", "1 bis 2 mio.","2 bis 3 mio",
"3 bis 6 mio", "6 bis 10 mio.", "10 bis 18 mio.")

Die fertige Grafik

Nun erzeugen wir uns unsere Grafik und geben dem Raster die zugeordneten Farben zum entsprechenden Bundesland vor. Weiterhin versehen wir unsere Grafik mit einer Legende und fügen einen Titel ein.

plot(shapes, col = farben[farben.nr], bg = "white" )
legend("bottomleft", levels(farben.nr), fill = farben, cex = 1.2, bty = "n", border = FALSE, text.col = "black")
title("Einwohner pro Bundesland", cex.main = 1.5)