Statistik: Listen glätten und darstellen

Mit Director kann man auch allerhand Statistik machen. Zb. Vektor-Forms eignen sich gut für Liniendiagramme. Wenn die Kurven noch dazu geglättet sind, erspart man sich das Blinzeln und kann etwas mehr herausholen.

Die Beispieldaten stammen aus einer Webstatistik: Besucher pro Tag. Es könnten genausogut Niederschlagsmengen oder Temperaturen sein - es sind Daten, die großen Schwankungen unterliegen, aber nicht ganz zufällig sind: Im Winter ist es eben meistens kälter als im Sommer. Solche Zahlen einfach in ein Diagramm geschrieben bilden heftige Zacken, nur durch Blinzeln lassen sich Trends erkennen. Aber wie blinzelt man mathematisch? Ein Weichzeichner macht es möglich.


Zur Sache:

Handler Testdaten
Es werden einfach aus einer langen Liste beliebige Abschnitte gezogen und nachmanipuliert, um sinnvolle Testdaten zu bekommen.

Handler Zeichen
Da mehrere Kurven gezeichnet werden, müssen für alle die gleichen Parameter gelten - sonst würden sie nicht übereinanderpassen. Deswegen wird alles in einem zentralen Handler erledigt. Um die verschiedenen Iterationen zu demonstrieren, werden mehrere Darsteller gezeichnet. Ebenso werden die Monate und der Mittelwert eingezeichnet.

Wesentlich sind die 2 Funktionen zum Glätten und Zeichnen der Kurven:

Funktion ListeGlaetten
Es wird einfach jeder Wert herausgenommen und auf sich und seine Nachbarn aufgeteilt - hier je ein Fünftel. Das Problem sind die Ränder: Die Summe muss gleich bleiben, deswegen werden gleich zu Beginn "leere Nachbarn" eingefügt und am Ende jedes Durchganges wieder entfernt. Je mehr Durchgänge (Iterationen) gemacht werden, umso stärker werden die Werte verteilt und umso mehr ist die Kurve geglättet.

Funktion ListeZuGraph
Alle Werte werden entsprechend skaliert und an eine Vertex-Liste angefügt. Diese wird erst zum Schluss (weil das schneller geht) auf einen Vektor-Member übertragen. Um die Abmessungen zu erhalten, wird am Anfang die Y-Achse dazugezeichnet und am Ende der untere Teil der Box. Der Einfachheit halber werden die Punkte nach unten gezeichnet, erst auf der Stage wird das Sprite gespiegelt.
Ein kleineres Problem sind die Liniendicken. Der RegPoint von Vector-Forms ist nicht immer genau dort, wo er sein soll, deswegen ergeben sich leichte Verschiebungen, wenn verschiedene Liniendicken verwendet werden. Deshalb sind die Sprites leicht aus der Stage verschoben.

Was man noch machen könnte:
Interessante Auswertungen ergeben sich, wenn verschieden geglättete Kurvern verglichen werden. So können etwa die größten Schwankungen ermittelt werden.

Ich habe mich mit der Sache beschäftigt, weil Besucherstatistiken aus Webalizer 2.01 etwas mühsam sind, wenn man langfristige Auswirkungen sehen und mit den Google-Updates vergleichen will. Auch dieses Teil ist online, als Datenfutter braucht man in eine Textdatei - zusammenkopiert die Tages-Daten aus Webalizer: Webalizer Analyzer

 

Shockwave-Demo:
Auf das Bild klicken

Download: Dir 8.5
als Zip

Weitere Director Tutorials und Beispiele:

3D-Lingo:
Gesunde Natur für Director Entwickler

Trotz/Mit Lingo:
Movie als Video ausgeben

3D-Lingo:
Kleine Slideshow

Vectorforms:
Tortendiagramme mit Director

Playlist zusammentragen:
Filescanner (mp3)

Lingo für Einsteiger:
Kleines Quiz

Lingo-Basics:
Zufälle mit random()

Vectorforms:
Zappelnder Pfeil

Quads:
Bilder zerlegen und verzerren

Statistik:
Listen glätten und darstellen

Mini-Google
Schnelle Suche durch Indizierung

Zeichnen:
Schnellere Linien mit Vectorforms

Onlinegame:
Pagman mit zufälligem Spielfeld

 

  zurück    [ home ]   [ interactive design ]   [ tutorials ]   [ praxis ]

www.beesign.com - interactive design in wien