Blick in die Werkzeugkiste: Offene Daten in R – Teil 2

Letzte Woche habe ich den ersten Teil dieses Blogposts veröffentlicht, in dem ich einige einfache Visualisierungsmöglichkeiten der Statistiksoftware R vorgestellt habe. Daneben enthielt der Blogpost einige Empfehlungen zu Entwicklungsumgebungen und Beschreibungen des Arbeitens mit R.

In diesem zweiten Teil möchte ich nun zwei Beispiele speziellerer Visualisierungsformen zeigen und erklären, wie man mit R Daten für solche Visualisierungen aufbereiten kann. Wie gehabt drehen sich meine Betrachtungen um die Daten der permanenten Velozählstellen in der Stadt Zürich. Die Stadt stellt diese Daten verdankenswerterweise im Rahmen ihrer Open Data-Strategie frei zur Verfügung.

Visualisierungs-Klassiker: Nightingale-Plot

Als erstes möchte ich die Wochenrhythmen des Veloverkehrs an den einzelnen Zählstellen visualisieren. Das habe ich mit einem sogenannten Nightingale-Plot gemacht. Ich habe den Plot aus R im PDF-Format exportiert und im Vektorgrafikprogramm Inkscape noch etwas verschönert. Generell gilt: man kommt mit R grafisch relativ weit. Insbesondere mit ggplot2 erstellte Grafiken kann man in der Regel direkt zum Beispiel in Berichten einsetzen. Je nach Grafik bzw. dem verwendeten R-Paket kann sich das „Nachpolieren“ meiner Meinung nach aber schon lohnen. Ich habe dies bei beiden folgenden Grafiken (jeweils in einem Umfang von weniger als 10 Minuten) getan.

Der Nightingale-Plot vergleicht die mittlere Anzahl Velos pro Stunde über die Wochentage hinweg und visualisiert diese über den Radius (hier gibt es eine kritische Diskussion dazu). Die einzelnen Darstellungen zeigen damit das Geschehen an der jeweiligen Zählstelle (man darf also nicht einen absoluten Vergleich zum Beispiel zwischen den Dienstags-Zahlen an der Andreasstrasse und jenen an der Binzmühlestrasse anstellen).

Beim Prüfen der einzelnen Wochenmuster fällt auf, dass an den meisten Stationen der Veloverkehr am Samstag und Sonntag gegenüber den Arbeitstagen deutlich abfällt. Prominenteste Ausnahme ist der Mythenquai (MYTH) für Samstag und Sonntag sowie die Schulstrasse (SCHU) am Samstag. Die Langstrassen-Zählstelle (LANG) im Ausgangsquartier hat auch noch ein respektables Veloaufkommen am Samstag. Der rege Wochenendverkehr am Mythenquai und an der Schulstrasse lässt sich wohl primär aus Freizeitaktivitäten wie zum Beispiel einem Veloausflug entlang des linken Seeufers oder der entlang der Glatt begründen.

Kombination: Box-Plot und Liniendiagramm

Die nächste Grafik mit normalisierten Velozahlen pro Wochentag und Zählstelle reflektiert denselben Sachverhalt. Hier lassen sich aber Werte gut ablesen, während der Nightingale-Plot oben vor allem eine qualitative Übersicht gibt (und gewisse Probleme birgt).

Das spezielle Verkehrsmuster an Mythenquai und Schulstrasse ist auch in dieser Grafik augenfällig. Für die meisten anderen Zählstellen fallen die Zahlen am Samstag und am Sonntag auf circa 70% bzw. 50% des Tags mit den meisten Velos (in der Regel der Dienstag) ab.

Die kombinierte Grafik mit Boxplots und Liniendiagramm konnte in R einfach erstellt werden. Populäre Visualisierungspakete wie ggplot und ggmap setzten das Layer-Modell für Grafiken um. So konnte ich sehr einfach zuerst die Boxplots zeichnen und diese dann mit einer Liniengrafik überlagern. Das Layer-Modell bietet grosse Flexibilität. Aber: Wie immer wenn die technischen Möglichkeiten gross sind, ist aber das gesunde Augenmass der Anwenderin bzw. des Anwenders umso wichtiger.

Datenumformungen

In diesem Abschnitt erläutere ich einige Datenbearbeitungsschritte, welche für die hier vorgestellten Beispiele nötig waren, um die Daten der Stadt Zürich für die Visualisierungen passend aufzubereiten. Weniger technisch Interessierte können sich die Lektüre sparen und direkt zum Ende springen.

Das Einlesen der Velodaten der Stadt Zürich (Zählstände und Orte der Zählstellen) in R geschieht mit einigen Standard-Funktionen, die man bald memorisiert hat:

Einlesen von Daten im CSV-Format

Einlesen von Daten im CSV-Format

Nach dem Einlesen werden die Daten für die verschiedenen Visualisierungen unterschiedlich aggregiert. Dies kann mit einer Reihe von R-Bibliotheken und -Funktionen geschehen – zum Beispiel mit reshape und plyr. Oft führen mehrere Wege zum Ziel. Im folgenden Beispiel habe ich die beiden Tools kombiniert eingesetzt.

Wir starten mit diesem Datensatz (Auszug):

Um zu einen Datensatz zu erhalten, der für Visualisierung wie oben geeignet ist, aggregieren wir mit einer ersten Datenumformung per Wochentag. Als Aggregationsfunktion wird der Mittelwert (mean) gewählt:

Dadurch werden die Daten in die sogenannte long form (wenige, dafür lange Spalten) konvertiert. Der neue Datensatz listet alle Daten (also die Mittelwerte an allen Wochentage an allen Zählstationen) in je einer Spalte:

Mit einer zweiten Umformung erreichen wir, dass die einzelnen Wochentage jeweils ihre eigene Spalte erhalten und dass eine Zeile jeweils alle Daten einer Zählstelle umfasst (die wide form):

Nun gilt es für schöne Darstellungen nur noch, die Reihenfolge der Spalten so zu verändern, dass die Wochentage in ihrer korrekten Reihenfolge aufgelistet sind. Der folgende Datensatz diente als Grundlage für die Erstellung sowohl des Nightingale-Plot als auch des Boxplots mit Linien:

Und sonst?

Mit anderen Aggregationsoperationen können in R natürlich auch bequem andere Zeitperioden als Wochen untersucht werden, zum Beispiel der Jahresrhythmus des Veloverkehrs. Einige solcher Darstellungen werden Sie im dritten Teil dieser Serie finden.

Ich hoffe, dass ich mit diesem Artikel einige Einblicke in die Fähigkeiten von R im Bereich der komplexeren Datenumformung und der Visualisierung geben konnte. Für den letzten Teil halte ich noch zwei weitere Visualisierungstypen bereit: eine thematische Karte, die zwei Dimensionen visualisiert, sowie eine Heatmap.

Abonnieren Sie unseren RSS-Feed, um keinen unserer Artikel zu verpassen!

[Beim Schreiben dieses Artikels wurde ich unterstützt von Toralf Dittrich, Spezialist für Verkehrstechnik und Verkehrsmanagement in unserem Geschäftsbereich Verkehr.]

Ralph Straumann

Ralph Straumann

Ralph Straumann (Dr. sc. nat.) hat an der Universität Zürich Geographie mit Vertiefung in GIS, Wirtschaftsgeographie und Politologie studiert.

Seit 2010 arbeitet er im Tätigkeitsfeld Systemberatung + Analytik von EBP Informatik als Senior Consultant.

Er berät Kunden bei strategischen Fragen, zu Geschäftsprozessen und Organisation sowie bezüglich Quellen, Modellierung, Workflows und Analyse mit verschiedenartigen Daten im Schnittbereich zwischen IT/GIS und Anwendungsfeldern wie Verkehr und Raumplanung.

Mail: ralph.straumann@ebp.ch

Ralph Straumann auf:

Das könnte Dich auch interessieren...

5 Antworten

  1. 7. Oktober 2014

    […] explored by my esteemed colleague Dr. Ralph Straumann using R in a series of blog posts: Teil 1, Teil 2, Teil 3. We’re not going to go into as much detail here, but let’s see how Python with […]

  2. 25. Mai 2015

    […] more information on this topic check these blog posts (1, 2, […]

  3. 30. Mai 2015

    […] For more information on the data set and this topic check these blog posts (1, 2, […]

  4. 22. Oktober 2015

    […] auf diesen Betrachtungen und jenen aus dem zweiten Blogpost kann man also sagen: Die Zählstelle am Mythenquai gibt zwei Hinweise auf starken Freizeitverkehr: […]

  5. 14. April 2016

    […] (teilweise) mit R erarbeitete Analysen und Visualisierungen gezeigt: etwa meine dreiteilige Serie über die Analyse von Velozähldaten mit R und Bence Tasnádys und Nadine Riesers unterhaltsamer dreiteiliger Bericht […]