Posts mit dem Label R Karte werden angezeigt. Alle Posts anzeigen
Posts mit dem Label R Karte werden angezeigt. Alle Posts anzeigen

2014/07/27

Migrationsbilanz als ShinyApp

Für das Kurs-Projekt vom MOOC Developing Data Products habe ich eine simple Visualisierungs App entwickelt. Sie bereitet Migrationsdaten aus dem Zeitraum 2002 - 2012 der Bezirke von Oberösterreich in Form einer Choroplethenkarte auf und zeigt die Werte auch in Tabellenform.

Link zu shinyMig OÖ

ShinyApps.io

Umgesetzt wurde das Projekt zu Versuchszwecken in R auf der ShinyApps.io Plattform von RStudio. Das Deployment hierbei zeigte sich mehr als simpel. Sofern die Anwendung auf der eigenen Workstation einwandfrei läuft, kann es mit einem einfachen deployApp() Befehl auf die Plattform geladen werden. Die Kunst ist lediglich, die Anwendung am eigenen Rechner fehlerfrei zum Laufen zu bringen, da die debugging Möglichkeiten mit shiny leider noch sehr begrenzt sind.

Umsetzung in R

Bei der Entwicklung der App zeigte sich wieder eindeutig, dass R nur ein suboptimales Werkzeug zur Kartenerstellung ist. Mit ggplot2 ist zwar einiges möglich, der Aufwand dafür steht jedoch mMn nicht in Relation zu den mässigen Ergebnissen im Vergleich zu echter GIS-Software. Bei der Aufbereitung der Rohdaten (übrigen von data.gv.at) und der tabellarischen Darstellung in der App, konnte hingegen R natürlich seine Stärken ausspielen. Als größtes Hindernis bei der Entwicklung stellte sich die Kategorisierung der Migrationsbilanzen heraus, wobei ich mich nach etlichen Versuchen in automatischer- und einiger in manueller-Klassifizierung für einen semi-automatischen Weg entschieden habe, wobei positive und negative Salden getrennt und von diesen beiden Kategorien dann der jeweilige Median als weitere Schwelle eingeführt wurde. Damit blieb die visuelle Vergleichbarkeit der Karten noch einigermassen erhalten, bei Beibehaltung des Akzents auf die Trennung von positiven und negativen Werten. Für detaillierte Vergleiche sind ja noch die jeweiligen Schwellen in der Legende verzeichnet bzw. auch die Daten in der Tabelle ersichtlich.

Beispielcode

Der Beispielcode steht im R-Repo dieses Blogs zum download bereit.

2014/02/25

R-Package für interaktive Karten - rMaps

Kürzlich wurde ein neues Package präsentiert, um mit R interaktive Karten zu erstellen. Hier meine Erfahrung aus einigen Tests damit:

rMaps

Das Package wurde von Ramnath Vaidyanathan erstellt. Es ermöglicht die Erstellung von interaktiven Karten mit nur wenig Code und unterstützt einige javascript basierte Mapping Libraries, wie z.B. Leaflet. Das Package ist derzeit noch in einem Versuchsstadium, weist jedoch schon einige nützliche Funktionen auf. Es kann über den Github-Account des Entwicklers (Link) herunter geladen (bzw. geklont) werden und enthält eine ausführliche Installationsanweisung und Beispielcode. Weitere Anwendungsbeispiele finden sich auf der Website des Projekts. Hier zwei Beispiele mit sozialen Daten:

Beispiel: Kriminalitätskarte Houston

Heatmap: Kriminalitätsvorkommen in Houston - Übersicht
Das Beispiel wird auf dem Blog des Packages vorgestellt und visualisiert das Kriminalitätsvorkommen in Houston von Jänner bis August 2010 mit einer Heatmap. Der dazu benötigte Code wird im Post auch ausführlich erklärt.

Je nach Fragestellung kann der Analyserahmen vom Stadt- (Bild Screenshot Übersicht) bis hin auf Straßenzugsniveau (Bild Screenshot Detail) skaliert werden.
Heatmap: Kriminalitätsvorkommen in Houston - Detail

Beispiel: Einwohneranzahl je Gemeinde in Bezirken Steyr und Steyr-Land in 2013

Ein eigenes Beispiel verwendet Marker, welche die Gemeinden aus den politischen Bezirken Steyr bzw. Steyr-Land auf einer Hintergrundkarte (Datenbasis OSM, Rendering mit Leaflet) kennzeichnen. Die Zoomstufe ist auch hier wieder frei wählbar. Mit dem Mauszeiger kann eine Gemeinde ausgewählt werden und es erscheint in einem Pop-Up der Gemeindename und die jeweilige Einwohnerzahl aus dem Jahr 2013. 
Screenshot Beispielanwendung
Der Code des Skripts kann aus dem R-Beispiel Repositorium dieses Blogs auf Github herunter geladen werden: rBeispiele