Visualisierung von OpenData
Weltweit sind mehr als 60 Millionen Menschen auf der Flucht - ein trauriger Rekord. Die meisten Flüchtlinge suchen dabei Zuflucht in ihrem Heimatland oder in einem Nachbarstaat. Viele aber auch in Europa. In den vergangenen Monaten und Jahren war der Flüchtlingszugang - in die Nachbarländer der Konfliktstaaten und nach Europa - sehr unterschiedlich. Doch wie viele Personen flüchten wirklich nach Europa? Wie sehen die Asylzahlen im Kontext vergangener Flüchtlingsströme aus und was bringt das Schliessen der sogenannten Balkanroute? Folgende App soll Antworten auf diese und weitere Fragen zu den europäischen Asylzahlen liefern.
Daten sehen
Flüchtlings- & Migrations-Themen werden im öffentlichen Diskurs nicht selten politisch oder gar emotional aufgeladen diskutiert. Dabei verfallen viele einem politischen Links- / Rechtsdenken oder vorgefertigten Denkmustern. Folgende Grafiken visualisieren die jährlichen Daten zu den erstmaligen Asylanträgen der europäischen Länder. Dies soll eine sachliche und unvoreingenommene Auseinandersetzung mit dem Thema ermöglichen.
Daten verstehen
Die Karte zeigt die Anzahl der eingegangenen Asylanträge der einzelnen Länder, für das mittels des Sliders ausgewählte Jahr. Die Karte wird dann je nach Anzahl der Asylanträge im ausgewählten Jahr gemäss der dargestellten Skala eingefärbt. Für alle grau eingefärbten Länder existieren zu diesem Zeitpunkt keine Daten. Mittels Dropdown-Menü können die Daten in absoluten Zahlen oder im Verhältnis zur Wohnbevökerung dargestellt werden. Wenn man mit der Maus über ein entsprechendes Land fährt (mouseover), wird ein Tooltip mit den genauen Asylanträgen und der Asylquote eingeblendet.
Gleichzeitig werden für das ausgewählte Land alle historischen Asyldaten in einem Liniendiagramm angezeigt. Im Liniendiagramm wird das aktuell visualisierte Jahr mit einem gründen Punkt dargestellt. Mit einem Button werden die aggregierten Asylzahlen der EU-Mitgliedsstaaten über den gesamten Betrachtungshorizont dargestellt.
Die App besteht hauptsächlich aus einer HTML-Seite mit integriertem JavaScript-Code. Die Struktur der Webseite wurde in HTML erstellt und mit CSS "gestylt". Für das Anordnen des Inhalts (eng: alignment) und um die Webseite mobile-optimiert (genannt "responsive") zu gestalten, wurde die Bootstrap-Bibliothek (CSS & JavaScript) Version 4 in den Code eingebunden.
Für die Visualisierung der Daten wurde die JavaScript-Bibliothek D3 (Data-Driven Documents) in die Webseite eingebunden. Die D3 Bibliothek basiert auf den "pre-built" JavaScript Funktionen, umfasst aber noch zusätzliche Funktionen, um Daten grafisch und interaktiv im Browser darstellen zu können.
Der Bevölkerungs-Datensatz enthält die Bevölkerungszahlen der einzelnen Länder am 31.Dezember des jeweiligen Jahres für den Zeitraum von 1990 bis 2016. Der Migrations-Datensatz enthält die jährlichen Asylanträge der einzelnen Länder für den Zeitraum von 1990 bis 2016. Die Daten stammen vom offiziellen Statistikportal der EU (www.eurostat.org). Die Asyldaten mussten aus zwei unterschiedlichen Datenbanken (tables) abgerufen und manuell zusammengefügt werden, da Eurostat die Datenstruktur im Jahr 2007 verändert hatte. Die publizierten Daten umfassen nur die 28 europäischen Mitgliedsstaaten inkl. der Schweiz, Liechtenstein, und Norwegen.
Daten verstehen
Mittels einer visuellen Darstellung fällt das Verständnis und die Interpretation von komplexen Daten viel einfacher. Durch das Aufsummieren der Asylgesuche der einzelnen Jahre lassen sich verschiedene Krisen aus einer gesamteuropäischen Perspektive betrachten. So sieht man, dass in den letzten Jahren massiv mehr Asylgesuche gestellt wurden, als in vorhergehenden Krisen wie z.B. der Balkankrise Ende der 1990er Jahre. Da die Asylsuchenden nicht gleichmässig auf die EU-Länder verteilt werden, gibt es grosse Unterschiede zwischen der Anzahl Gesuche in den verschiedenen Ländern. Dies lässt sich mit der Karte sehr gut darstellen. Dabei berücksichtigt die Karte die Einwohnerzahl als Vergleichsgrösse, um die Daten vergleichbar darstellen zu können.
"Wir müssen leider davon ausgehen, dass das Flüchtlingsthema für Jahrzehnte ein Problem sein wird. (...) Diese Flüchtlingskrise ist kein europäisches Problem, es ist eines der ganzen Welt."
In einem weiteren Schritt könnten noch unzählige Daten in die Map integriert werden. So könnten Asylausgaben, Wirtschaftswachstum, oder vorherrschende Partei in die App integriert werden. Diese Daten würden auch zur Meinungsbildung der Bürger beitragen. Es liessen sich beispielsweise die Fragen beantworten, ob die Kriminalität bei höheren Asylzahlen steigt oder ob das Wirtschaftswachstum dadurch gefördert wird.
Die Frage, weshalb einige Länder von den Asylstellern bevorzugt werden, kann die Karte nicht beantworten. Man könnte aber verschiedene politische oder wirtschaftliche Hypothesen mit Hilfe der Karte zu ergründen versuchen. Mit der Map, dem Tooltip und dem Liniendiagramm könnte man die formulierten Hypothesen validieren. Die App kann so die explorative Forschung unterstützen und dadurch einen wichtigen Beitrag zur Flüchtlings- und Asyldiskussion beitragen.
was ich heute anders machen würde...
Sich am Anfang ein Konzept überlegen - Bei der Ideensuche für die OpenData App bin ich spontan auf die Idee der Visualisierung der Asylzahlen gekommen. Für mich war dann instinktiv klar, dass ich die Daten in einer Map darstellen möchte. Ich habe dann versucht, eine Karte der europäischen Länder zu generieren, jedoch noch ohne Daten. Da ich bis jetzt keinerlei Programmiererfahrungen hatte, und ich weder mit JavaScript oder D3 vertraut war, dauerte dieser Schritt ziemlich lange. Erst als ich die Map erstellt hatte, überlegte ich mir wie ich die Daten integrieren könnte, was zum Schluss zu einem vollständigen Umschreiben meines Karten-Codes führte. Als ich die Daten in die Karte eingefügt hatte, empfand ich den Nutzen der App als ungenügend. Deshalb wollte ich die App mit Zeitreihen und anderen Funktionen ausstatten und habe den Code aus diesem Grund erneut umgeschrieben. Hätte ich doch nur vorher folgenden Kommentar gelesen, dann hätte ich mir das wohl anders überlegt. Zudem fehlte mir durch das kontinuierliche Ausbauen ein klares Datenkonzept.
Den Blick fürs Wesentliche behalten - Es ist mir oft passiert, dass ich Stunden damit verbracht habe, nach einer Lösung zu suchen, wie ich nun z.B. die Y-Achse animieren kann, welcher "Transition-Effekt" nun am besten passt oder welches Farbschema man verwenden sollte. Dabei hätte es zu diesem Zeitpunkt viel grundlegendere Sachen gebraucht. Es besteht laufend die Verlockung, sich bereits am Anfang mit dem Design zu beschäftigen, was aber am Anfang meist noch nicht sinnvoll ist. Wenn ich mich lange mit einem Problem beschäftigt hatte, liess mir das keine Ruhe, bis ich eine Lösung gefunden hatte. Es ist sehr schwierig und erfordert Überwindung, Probleme ungelöst stehen zu lassen und den Blick fürs Wesentliche zu behalten.
Den Code aufgeräumt halten - Wenn man nicht genau weiss, warum etwas nicht wie geplant funktioniert, muss man oft verschiedene Sachen ausprobieren, um den Grund zu eruieren. Hierzu verändert man meist kurz hier und da ein paar Werte, um zu schauen, ob sich etwas verändert. Wenn es dann funktioniert hat, war die Sache erledigt und ich habe mich dem nächsten Problem zugewandt. Dadurch habe ich aber den Code mit vielen unschönen Umgehungslösungen ausgestattet. Und meistens sind es dann genau diese Konstrukte, an welchen man sich später den Kopf zerbricht, weil sie vorher unüberlegt und schnell integriert wurden. Deshalb ist es umso wichtiger, seinen Code zu kommentieren und aufgeräumt zu halten.
Bestehende Scripts verwenden - Ich habe ganze Nächte damit verbracht einen Slider in D3 von Grund auf selber zu bauen, nur um am Schluss festzustellen, dass man es mit einem im Internet veröffentlichten Script viel besser und eleganter lösen könnte. Durch das Verwenden von öffentlichen Bibliotheken spart man sich viel Zeit und schont meistens auch die Nerven.
Mehr lesen und Zeit sparen - Ich habe viele Sachen programmiert, von welchen ich nicht ganz genau wusste wie und warum sie funktionieren. Ich hatte eine Idee, für was gewisse Befehle gut sind, war mir aber nicht immer ganz sicher. Hätte man sich am Anfang ausführlicher mit der Dokumentation beschäftigt, hätte man zum einen die Befehle gezielter einsetzen können, und später nicht wieder umschreiben müssen.
Etablierte und bewährte Bibliotheken verwenden - Ich habe für meine App die D3 Version 4.0 und Bootstrap 4.0 (alpha) verwendet. Da diese Bibliotheken noch nicht sehr lange veröffentlicht sind, war es schwieriger, auf den Hilfeseiten von Stackoverflow und Co. Antworten zu finden. Die meisten veröffentlichten Scripts und Vorlagen waren zudem noch nicht kompatibel mit den neuen Versionen.
Rohdaten transformieren - Das JSON-File, welche die geografischen Daten der Länder beinhaltet war sehr kompliziert aufgebaut, da es noch sehr viel mehr Informationen und Daten umfasst. Dies hatte meinen Code komplexer und unübersichtlicher gemacht. Im Nachhinein betrachtet, wäre es wohl einfacher gewesen, das JSON-File aufzuräumen oder selber zu generieren. Ein ähnliches Problem hatte ich mit den Asyldaten, welche ich von Eurostat aus zwei unterschiedlichen CSV-Files beziehen und zusammenfügen musste. Zudem waren die Zeitreihen im Zeilenformat anstelle der meistens verwendeten Tabellenform. Ein manuelles transformieren der Daten hätte mir wohl viel Arbeit erspart.
Wer, wie, was, warum...
Diese App wurde im Rahmen der Vorlesung "OpenData" von Dr. Matthias Stürmer an der Universität Bern im FS 2017 programmiert und am 1. Juni veröffentlich. Die Aufgabenstellung bestand darin, öffentliche Daten (OpenData) in einer App mittels der D3 Bibliothek zu visualisieren. Durch die grosse mediale Aufmerksamkeit der sogenannten "Flüchtlingskrise", entschied ich mich für die Visualisierung der Asylzahlen der EU.
Die App ist mein erstes Programmierprojekt. Durch den praxisbezogenen Ansatz des Projektes musste man sich intensiv mit dem Programmieren auseinandersetzen, wurde dafür aber mit einer sichtbaren und nutzenstiftenden App belohnt.
Daten / Content | Quelle |
---|---|
Asyl- & Migrationszahlen und Eurostat Bild | www.eurostat.org (Datenabfrage 12.May, 2017, 17:00 Uhr) |
TopoJson-Files (für Map) | Die ursprünglichen Shapefiles gibt es hier (github Repository) |
Introbild | Bild von Climatalk .in unter (CC BY-NC 2.0) auf flickr hochgeladen |
Quellcode der Applikation | Der Quellcode kann hier heruntergeladen werden (zip-Datei) |
Programmiersprachen-Bild | Rohdaten von www.gun.io & www.github.com |