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

Zunächst benötigen wir eine sogenannte Shape-Datei. Diese enthält das Raster für unsere Landkarte. Dann laden wir die Shape-Datei:

shapes <- readShapeSpatial("vg2500_bld.shp")

Hierbei können wir uns das Raster unserer Landkarte mit

plot(shapes)

anzeigen lassen. Dies ergibt 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. Die Information, in welcher Reihenfolge die Bundesländer gespeichert sind, sind 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

Es empfiehlt sich das Paket RColorBrewer zu laden. Damit 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))

Dabei  geben wird diesen Klassen mit dem nächsten 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. Ebenfalls 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)