Informations Visualisierung VO/UE SS08
Animated Transitions in Statistical Data Graphics

Benedikt Stehno, 0225175, 066932

Dokumentation

Das Program wurde in Java geschrieben und verwendet die Graphics2D Api um die Grafiken und Animationsübergänge darzustellen. Es funktioniert als Applet und ebenfalls als standalone-Applikation. Mit Hilfe der Cursor Tasten oder der Mouse Tasten kann zwischen vorher definierten Transitions gewechselt werden.

Die main Methode befindet sich in infovis.InfoVis. Eigene Transitions können in der Methode test() erstellt bzw. hinzugefügt werden.

Interner Aufbau

das program besteht aus drei packages:

infovis

InfoVis hierbei handelt es sich um das Hauptprogram. Es wird in der Methode test() mehrere Beispiel-Grafiken erzeugt und deren Übergänge ineinander.

DrawObject ist ein Basis Element aller Grafiken, also die einzelnen Balken, Punkte oder Piestücke. Enthält Membervariablen, welche die Position, Farbe und Shape des Objekts beschreiben. Auf diese arbeiten die einzelnen Blend-Klassen um Änderungen hervorzurufen. Die Chartgeneratoren generieren, je nach Typ der Grafik, diese einzelnen Primitiven und fassen sie zu einer Grafik (Graph) zusammen.

Graph beschreibt eine Grafik. Sie bestehen aus einem Vector mit den einzelnen DrawObjects sowie einer DataCollection in der alle Daten drinnen steht und zwei Member Variablen a1 und a2 vom Typ Achsen. In a1 sind die Ausgangsachsen der original Grafik gespeichert, in a2 die der Zielgrafik. Generell werden immer beide gezeichnet, wobei mittel ColorBlend zwischen ihnen geblendet wird bei einem Übergang.

Achsen sind Objekte in denen die Daten gehalten werden, für die jeweiligen Achsen einer Grafik. Dieses Objekt wird vom jeweiligen Chartgenerator erzeugt, das verschieden Grafiktypen unterschiedlich Achsen brauchen.

Transition Transitions werden aus einzelnen Transition Objekten zusammengebaut. Die Klasse verfügt über zwei Konstruktoren. Der Erste wird dazu genützt, um die "Haupttransition" zu erzeugen und hat daher einen Parameter, wie lange diese dauern soll. Zu ihr werden dann "Child" Transitions mit der Methode add() hinzugehängt. Diese "Child" Transitions werden mit dem zweiten Konstruktor erzeugt. Dieser hat zwei Parameter, die angeben, ab und bis wann diese Transition relativ zum Parent laufen soll. Jeder Transition kann man ebenfalls die nötigen Blender versehen, die auf den DrawObjects operieren.

transitionGenerator ist das Kernstück, der Software. Diese Klasse erzeugt abhängig von dem ihm übergebenen zwei Grafiken, eine Transition, die wiederum möglicherweise mehrere "Child" Transitions hat und die nötigen Blender. Hierzu analysiert die Klasse die zwei Grafiken und stellt fest, von welchem Typ sie sind und gegebenfalls, um welche Art von Änderung es sich handelt. Ebenfalls werden die Achsen der Zielgrafik gecloned und der aktuellen angezeugten Grafik als das zweite Achsenpaar a2 übergeben.

infovis.chartgenerators

Darin befinden sich drei Chart/Plot Generator-Klassen (BarChartGenerator, PieChartGenerator und ScatterPlotGenerator für die einzelenen unterstützen Businessgrafiktypen), die einzelne Graphiken (Graph) erzeugen mittels der generate() Methode. Sie sind abgeleitet von DataCollection, die Methoden zum hinzufügen von ein- bzw. zweidimensionalen Datenwerten zu einer Grafik bereitstellt (add(x), bzw. add(x,y)), als auch grundsätzliche Operationen wie Maximum, Minimum und Summe. Diese Generatoren greifen auf die ShapeGenerator Klasse zurück, um die einzelnen Primitiven DrawObjecte wie Piechartstücke, Kreise und Balken zu erzeugen. Sie geben ein Graph Objekt zurück, das mehr oder minder nur einen Sammlung von Primitiven DrawObjects ist und der Elemente die zum zeichnen der Achsen nötig sind.

infovis.blend

In diesem Packages befinden sich die implementierten Blending Funktionen (LinearBlending und SlowInSlowOutBlending). Diese ermöglichen zu spezifizieren, ob die Animation gleichmässig oder am Anfang und Ende ein bischen langsamer ablaufen soll.

Desweiteren auch Blending Operatoren für DrawObjects um deren Position (PositionBlend und PositionRadialBlend), Shape (ShapeBlend) und Color (ColorBlend) zu manipulieren. Sie können auf einzelne oder dem ganzen Set von DrawObjects einer Graphik operieren (many()). Dazu gibt übergibt man diesen Blend-Klassen im Konstruktor die DrawObjects auf denen die Operation ausgeführt werden soll (also die Elemente des grad angezeigten Graph Objekts), sowie DrawObjecte vom Ausgangszustand und vom finalem Zustand.

Beispiel:
ColorBlend MyColorBlend=new ColorBlend(DrawObject obj, DrawObject src, DrawObject dst);

MyColorBlend ändert nun die Farbe vom DrawObject obj, von der Farbe die das Object src hat zur Farbe die das Object dst hat.

Downloads

Animated Transitions in Statistical Data Graphics
Zusammenfassung
Presentations Slides
Sourcecode zip file
InfoVis Jar File (standalone)

JavaDoc


Sourcecode Quickview

InfoVis Demo Applet



Use Left Mousebutton or Keyboard-Arrow-Key to skip to next animation
Use Right Mousebutton or Keyboard-Arrow-Key to skip to previous animation