Projektgruppe Visual Analytics - Medieninformatik und Multimedia ...
Projektgruppe Visual Analytics - Medieninformatik und Multimedia ...
Projektgruppe Visual Analytics - Medieninformatik und Multimedia ...
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
10.1 Punktdiagramm 175<br />
10.1.4 Axis <strong>und</strong> AxisNode<br />
Die Klasse Axis enthält ein Property DropAreaTyp vom Typ DropAreaTyp, welches<br />
angibt, um welchen Typ von Achse es sich handelt. DropAreaTyp ist dabei eine<br />
Aufzählung, welche die Werte XAxis, YAxis, Color, Size <strong>und</strong> Animation enthält,<br />
wobei der DropAreaTyp der Klasse Axis nur XAxis oder YAxis sein kann. Weiter hat<br />
die Achse eine Translatetransform, dessen X- <strong>und</strong> Y-Properties an die Properties<br />
TranslateX <strong>und</strong> TranslateY des Diagramms geb<strong>und</strong>en sind. Handelt es sich bei der<br />
Achse um eine X-Achse, wird das Binding des Property X der TranslateTransform<br />
entfernt. Stellt die Achse eine Y-Achse dar, wird analog dazu verfahren, jedoch<br />
mit dem Y-Property. Die Achse hört auf PropertyChanged-Events, welche vom<br />
DiagramDataModel abgefeuert werden, reagiert dabei allerdings nur auf Änderungen<br />
der Eigenschaft CellSet. Diese Änderung sorgt dafür, dass sich die Measure-Achse<br />
aufbaut. Die Dimensions-Achse ist in der Lage, sich noch vor der Measure-Achse<br />
aufzubauen, da die Nodes der Level sich nicht verändern können. Der Aufbau der<br />
Dimensions-Achse wird gestartet, sobald ein neues Level in die zur Dimensions-Achse<br />
gehörende Liste im Dictionary hinzugefügt wird. Wird das Level aus dieser Liste entfernt,<br />
wird die Achse wieder gelöscht. Wenn ScaleX <strong>und</strong> ScaleY sich verändern, werden die<br />
Abstände zwischen den AxisNodes angepasst oder gegebenenfalls ausgeblendet. Dieser<br />
Vorgang wird nun für die X-Achse erläutert, der Vorgang für die Y-Achse läuft analog<br />
dazu.<br />
Zuerst müssen einige Variablen definiert werden:<br />
• s = Skalierungsfaktor<br />
• W = Diagrammbreite<br />
• w = Beschriftungsbreite (AxisNode)<br />
• c = Anzahl von Beschriftungen auf der Achse<br />
Der Abstand d zwischen den einzelnen Beschriftungen wird mit folgender Formel<br />
berechnet:<br />
d = s ·W − w · c<br />
(10.1)<br />
c − 1<br />
Dabei wird nur jedes i-te Element angezeigt, wobei i wie folgt berechnet wird:<br />
⌊ c · w<br />
⌋<br />
i =<br />
(10.2)<br />
W<br />
Die DrillDown- <strong>und</strong> die RollUp-Funktionen sind so umgesetzt worden, dass jeweils nur<br />
eines der Level, die einer Achse zugeordnet sind, ausgetauscht wird. Diese Änderung<br />
bewirkt, dass eine neue Datenbankabfrage gestellt <strong>und</strong> dass anschließend ein neues<br />
CellSet für die Darstellung verwendet wird. Es werden also sowohl die Achsen als auch