Animierte Erforschung von Dynamischen Graphen mit Radialer Anordnung

Programmieraufgabe im Rahmen der Lehrveranstaltung
VU Informationsvisualisierung SS 2005

Florian Sch�llhammer, 0325948


Inhaltsverzeichnis


Einf�hrung

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.


Funktionsprinzip

Der Knoten in Zentrum

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)

Ringgraph
Abbildung 1: Knoten im Zentrum

Animierte �berg�nge

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.

Interpolation der Position
Abbildung 2: Interpolation der Kartesischen Koordinaten vs Interpolation von Polarkoordinaten

Verz�gerung der Animation

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.

Verz�gerte Bewegung
Abbildung 3: Verz�gerte Bewegung mittels Tangens

Platzallokation

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:

Platzallokation
Abbildung 4: Platzallokation eines Knotens

Das Programm

Datenimport

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.

Implementation

Das Programm wurde C# als Window-Anwendung entwickelt. Es folgt eine kurze Beschreibung der Source-Files.

Node.cs

Aufbau eines allgemeine Graphens

  • Verlinken von Knoten
  • Breitensuche im Graph
  • Suchen der k�rzesten Verbindung zwischen zwei Knoten
  • Ermittelt ob Graph zyklisch ist

NodeTree.cs

Erstellt Baum ausgehend von einem Knoten

  • Baum erstellen
  • Suche von Kinder-Knoten im Baum
  • Tiefe des Baums bestimmen

NodeGraph.cs

Graphische Darstellung eines Knotens

  • Platzallokation eines Knoten
  • Positionsberechnung eines Knotens
  • Animation
  • Mausklick => Knoten ermitteln

GraphController.cs

Steuerung des Graphen

  • Animationstiming (+ Verz�gerung)
  • Redraw-Routine des Graphen
  • Mausklick verarbeiten

NodeImporter.cs

Allgemeine Schnittstelle zum Datenimport

NodeImporterXml.cs

Importer f�r einfaches XML-Format

Screenshots

Screnshot 1
Abbildung 5: Screenshot 1


Screnshot 2
Abbildung 6: Screenshot 2


Screnshot 3
Abbildung 7: Screenshot 3

Referenzen