Hiwi-Job: Graphen-Visualisierungswerkzeug
- C++
- Qt
- Doxygen
- Python
Während meiner Diplomarbeit habe ich zusätzlich am VISUS (Visualisierungsinstitut der Universität Stuttgart) ein Programm zur Visualisierung von dynamischen gewichteten gerichteten Graphen mit einer hierarchischen Anordnung der Knoten implementiert.
Hier ist ein Beispiel für eine entsprechende Visualisierung für einen Fußballdatensatz zu sehen, welche die Anzahl der Tore von verschiedenen Ländern, die gegeneinander gespielt haben, abbildet:
Diese Visualisierungstechnik zeigt in der Mitte die Hierarchie, welche die Knoten des Graphen enthält; oberhalb und unterhalb sind gerichtete Kantenverbindungen der Knoten zu sehen. Hierbei stellt eine Linie oberhalb der Hierarchie eine gerichtete Kante vom Knoten, welcher sich unterhalb des rechten Endes der Linie befindet, zu dem, welcher sich am linken Ende der Linie befindet dar – Kanten verlaufen hier also von rechts nach links. Unterhalb der Hierarchie sind entsprechend Kanten von links nach rechts abgebildet. Auf der linken Seite der Visualisierung befindet sich zusätzlich eine Zeitachse, welche auf Höhe jeder Kante deren Gewicht farbig codiert darstellt. Hier können Graphen (ein Zeitbereich) ausgewählt werden, welche für die Einfärbung der Kanten im rechten Bereich der Visualisierung in Betracht gezogen werden sollen. Die Kanten können beispielsweise den Durchschnitt, das Maximum oder das Minimum der Gewichte aller ausgewählten Graphen anzeigen. Durch Tooltips und Selektion verschiedener Elemente in der Visualisierung können weitere Details des Datensatzes analysiert werden.
Für das Beispiel des Fußballdatensatzes wird die Welt (mit Kontinenten, Ländern, ...) als Hierarchie dargestellt. Alle Blattknoten der Hierarchie (Länder) sind die Knoten des Graphen, welche über gerichtete Kanten miteinander verbunden sind. Eine gerichtete Kante von Land A zu Land B bedeutet hier, dass Land A gegen Land B an einem Fußballspiel teilgenommen hat. Das Gewicht repräsentiert die Anzahl an Toren die Land A im Spiel gegen Land B geschossen hat. In der Zeitachse wird die Anzahl der Tore über die Zeit dargestellt. Die Kanten können nun anhand eines ausgewählten Zeitbereichs (Graphen) mit beispielsweise der durchschnittlichen Anzahl an Toren eingefärbt werden.
Das Programm ist in C++ implementiert und verwendet Qt für die Benutzeroberfläche; das Qt Graphics View Framework wird für die grafischen und interaktiven Elemente der Visualisierung eingesetzt.
Anhand zweier verschiedener Datensätze wird in diesem Video gezeigt, wie die Anwendung verwendet werden kann:
Visualisierungen, welche ich mittels dieser Anwendung erzeugt habe, werden in der Publikation Edge-Stacked Timelines for Visualizing Dynamic Weighted Digraph verwendet. Dort findet sich auch eine genauere Beschreibung zu dieser Visualisierungstechnik.