Bevölkerungsdichte in Dresden: Visualisierungsbeispiel mit R (Choroplethenkarte)

Bevölkerungsdichte in Dresden

Die Dresdner Stadtteile sind, wie kaum anders zu erwarten, unterschiedlich dicht besiedelt. Wo die Dresdner eng aufeinander wohnen und wo nicht, lässt sich am besten grafisch darstellen:

Bevölkerungsdichte in Dresden
Bevölkerungsdichte in Dresden.
Visualisierung mit R

Je dunkler die Fläche, desto höher die Besiedlungsdichte, d. h. desto mehr Einwohner je Hektar im jeweiligen Stadtteil. Die Liste zu den nummerierten Stadtteilen gibt es u. a. hier. Auf dresden.de waren heute (20.5.2015) einige verknüpfte PDF-Dokumente nicht verfügbar (tote Links).

Wenig überraschend weisen die Dresdner Heide (44), Hellerberge (34) und Flughafen / Klotzsche (33) die geringste Besiedlungsdichte auf, mit durchschnittlich weniger als einem Einwohner pro Hektar. Die am stärksten besiedelten Stadtteile sind laut dieser Statistik (Stand der Einwohnerzahlen: 31.12.2013) die Äußere Neustadt (Nr. 11, 152 Einwohner / Hektar), Prohlis-Süd (Nr. 72, 124 Einwohner / Hektar) und Striesen-West (Nr. 54, 113 Einwohner / Hektar). Striesen-Ost (Nr. 52) liegt ebenfalls noch oberhalb der 100-Einwohner-pro-Hektar-Marke (110).

Was lange währt …

In eigener Sache: statistik-dresden.de arbeitet unter anderem mit R, der freien Statistik-Software, die dank tausender Zusatzpakete extrem leistungsfähig ist – sowohl was statistische Analysemethoden betrifft, als auch für grafische Visualisierungen.

Erstellung einer Choroplethenkarte mit R – Schritt für Schritt

Wie wurde die obige Grafik, eine sog. Choroplethenkarte, mit R erstellt? Was wird benötigt?

  1. Für die Kartendarstellung Dresdens diente eine Shape-Datei. In diesem Fall stammt sie von https://home.geggus.net/pub/
  2. Die Daten, also Einwohner je Stadtteil und Fläche der Stadtteile, werden von der Stadt Dresden veröffentlicht, inklusive der Nummerierung der Stadtteile.
  3. Entscheidend ist die korrekte Verknüpfung der Kartendaten mit der Bevölkerungsdichte.
  4. Für die Farbgebung müssen Intervalle festgelegt werden, siehe Legende.
  5. Nachdem die Karte gezeichnet und eingefärbt wurde, wurden die Stadtteilnummern in der Mitte der Flächen ergänzt.

Herausforderungen der Datenaufbereitung für die Choroplethenkarte

Bei der Datenaufbereitung waren zwei Herausforderungen zu bewältigen, die mit der Verknüpfung der Kartendaten mit der Bevölkerungsdichte zusammenhängen. Die Liste der Stadt enthielt Bezeichnungen wie Äußere Neustadt (Antonstadt) oder Hellerau/Wilschdorf mit RähnitzIn den Kartendaten (R-Bezeichnung: Large SpatialPolygonsDataFrame) waren die Stadtteile in vielen Fällen abweichend, meist kürzer, bezeichnet, z. B. nur Äußere Neustadt oder Hellerau/Wilschdorf. Für eine zuverlässige Verknüpfung wurden die Bezeichnungen angeglichen. Dabei wurde pmatch (partial match) im Rahmen einer selbst definierten Funktion wie folgt eingesetzt:

Schreibweise <- function(Stadtteil) {
     Stadtteildaten$Name[pmatch(Stadtteil, Stadtteildaten$Name)] <<- Stadtteil
}

Der Funktionsufruf war denkbar einfach. Das Kürzen von Äußere Neustadt (Antonstadt) auf Äußere Neustadt geschah mit dem einfachen R-Code

Schreibweise(„Äußere Neustadt“)

Mit pmatch wurde die Position des passenden Datensatzes in der Liste der Stadt ermittelt und anschließend mit der kürzeren, im Aufruf definierten Bezeichnung überschrieben. Zu beachten ist das superassignment <<- anstelle der „normalen“ Zuweisung mit <-. Ansonsten würde nur eine lokale Kopie der Bezeichnung überschrieben, die außerhalb der Funktion nicht zur Verfügung steht.

Nach dieser Bereinigung konnten die beiden Datensätze eindeutig verknüpft werden, mittels exaktem match. Dazu wurde ein Vektor gebildet, der für jeden Stadtteil in den Geografie-Daten die Position des zugehörigen Stadtteils in den Daten zur Bevölkerungsdichte enthält. (Die beiden Datensätze waren unterschiedlich aufgebaut bzw. sortiert.)

Farbgebung und Zeichnen der Karte

Für die Schwellenwerte der Farbgebung (siehe Legende) wurden verschiedene Varianten getestet, wobei sich alle die cut-Methode zunutze machten. Mit der Option breaks=6 bzw. breaks=9 wurden gleich große Abstände probiert. Ergebnis: die Karte sah sehr unbefriedigend aus, die kleinste Kategorie mit der geringsten Einwohnerdichte umfasste viele Stadtteile, man sah zu wenig Abstufungen. Bei der Option quantile bemängelte R die nicht-eindeutigen Abgrenzungen. Schließlich wurden manuelle Kategoriengrenzen gewählt, bis nach mehreren Versuchen die obige Darstellung entstand. Man kann daran kritisieren, dass die farbgebenden Kategorien im Sinne ihrer Einheiten (Einwohner pro Hektar) unterschiedlich breit sind. Dem Ziel, eine möglichst differenzierte, kontrastreiche Darstellung zu erreichen, wurde jedoch Vorrang eingeräumt. Zur Orientierung dienten Perzentile.

Verwendete R-Module

Zum Einsatz kamen die Module (Packages) maptools, um die Karte zu zeichnen und die Mittelpunkte der Stadtteile für die Nummerierung zu finden, und RColorBrewer für die Farbskala.

Ohne Datendesign mit R: 100 Visualisierungsbeispiele hätte ich die Grafik nicht erstellen können. Ich habe Thomas Rahlfs Beispiel einer Choroplethenkarte von Deutschland auf Kreisebene, „Arbeitslose auf Wahlkreisebene 2005“ für die Dresdner Daten adaptiert.


5 Gedanken zu „Bevölkerungsdichte in Dresden: Visualisierungsbeispiel mit R (Choroplethenkarte)“

    1. Hallo silviliebe,
      ich hab Einwohner und Flächen in Hektar einer Broschüre der Stadt entnommen. Darstellung der Einwohner pro Quadratkilometer wäre natürlich auch möglich gewesen.

  1. Hallo,
    eine sehr schöne Statistik. Genau in diesem Stil würde mich eine Angabe zum durchschnittlichen Einkommen/je Stadtteil intesssieren.
    Hast du auch so eine Grafik?

    Ansosnten würden mich noch die quellen zu der oberen Grafik intesssieren, sind die irgandwo ersichtlich oder könntest du sie im Zweifel nachreichen?

Freue mich über Kommentare!

Wir benutzen Cookies um die Nutzerfreundlichkeit der Webseite zu verbessen. Durch Deinen Besuch stimmst Du dem zu.