Programmieraufgabe im Rahmen der Lehrveranstaltung
VU Informationsvisualisierung SS 2005
Florian Schöllhammer, 0325948
Obwohl es schon sehr viele Methoden gibt, um Graphen zu visualisieren, macht es dennoch Sinn, sich mit neuen Methoden auseinanderzusetzen, da jede ihre eigenen Stärken hat.
Diese Visualisierungs-Methode ist speziell geeignet, um (auch komplexe) Graphen einfach zu durchbrowsen um generelles Verständnis des Netzwerkes zu erhalten. Es wird dazu ein Knoten ausgewählt, für den man sich interessiert. Da sich alle anderen Knoten des Netzwerkes kreisförmig um den ausgewählten Knoten im Zentrum anordnen, ist leicht zu erkennen, wie der Knoten im Zusammenhang mit dem Rest des Netzwerkes steht. Selektiert man nun einen weiteren Knoten, so rutscht dieser in ins Zentrum.
Um bei dieser Veränderung nicht den Überblick zu verlieren, wird die Bewegung aller Knoten animiert.
Wie schon erwähnt, kann der Benutzer den interessierenden Knoten selbst wählen. Von diesem ausgehend wird dann ein Baum durch das restliche Netzwerk aufgebaut (Vorraussetzung dafür ist natürlich, dass es der Graph zusammenhängend ist, es also einen Weg von jedem Knoten zu jedem anderen Knoten gibt)
Der ausgewählte Knoten wird dann im Mittelpunkt dargestellt, während die der generierte Baum schichtweise um ihn auf Kreisen dargestellt wird. Somit ist sofort ersichtlich, wieweit ein beliebiger Knoten des Netzwerks vom ausgewählten Knoten entfernt ist (man braucht nur nachschauen, auf welcher Schicht er liegt = entspricht dem kürzesten Pfad)
Abbildung 1: Knoten im Zentrum |
Natürlich ist es nun auch möglich, einen anderen Knoten auszuwählen. Da man bei einer sprunghaften Änderung (der neue Knoten kommt ins Zentrum, ein Baum wird rund um ihn aufgebaut) die Übersicht verlieren würde, werden die Positionsänderungen animiert.
Wie man sich anhand der untenstehenden Graphiken leicht überzeugen kann, würde es bei direkten Positions-Interpolation zu vielen Überkreuzungen kommen. Deshalb werden die Polarkoordinaten der Knoten berechnet und diese dann interpoliert.
Abbildung 2: Interpolation der Kartesischen Koordinaten vs Interpolation von Polarkoordinaten |
Versuche zeigen, dass es für den Menschen einfacher ist, den Überblick zu behalten, wenn die Animation nicht in konstantem Tempo vollzogen wird, sondern es anfangs eine Beschleunigungsphase und am Ende eine Abbremsphase gibt. Dies kann mit Hilfe von trigonometrischen Funktionen realisiert werden.
Abbildung 3: Verzögerte Bewegung mittels Tangens |
Wie man sich gut vorstellen kann, ist es vorteilhaft, ein radiale Anordnung zu verwenden, da in höheren Schichten der Umfang größer ist und somit auch mehr Knoten Platz finden - das ist deshalb gut, da der Baum ja immer breiter wird.
Den Platz den ein Knoten benötigt hängt von mehreren Kriterien ab:
Abbildung 4: Platzallokation eines Knotens |
Ich verwende für das Programm eine allgemeine Import-Schnittstelle, so dass es möglich ist, den Graph aus verschiedenen Quellen (XML, Datenbank, Textdatei, ...) zu lesen. Für meine Anwendung habe ich dann auch einen XML-Importer für ein sehr einfaches XML-Document, welches den Graphen speichert, geschrieben.
Das Programm wurde C# als Window-Anwendung entwickelt. Es folgt eine kurze Beschreibung der Source-Files.
Abbildung 5: Screenshot 1 |
Abbildung 6: Screenshot 2 |
Abbildung 7: Screenshot 3 |