2009-05-08 11 views
2

Ich möchte voronoi treemaps für Statistikdaten, wie alt text newsgraphyWie kann ich Voronoi Treemaps machen?

Wissen Sie, wie ich machen kann das tun in Perl, PHP, Ruby oder Python?

+2

neugieriges Beispielbild. Ich denke nicht, dass es irgendwelche Punkte gibt, die dies als Voronoi-Tessellation geben. insbesondere die beiden langen geraden Linien machen mich misstrauisch. – mariotomo

+2

Es könnte sein, wenn eine hierarchische Reihenfolge erlaubt wäre (d. H. Verkettungen niedrigerer Ebenen innerhalb jeder Zelle). Der Baum müsste dann eine erste Ebene haben, die aus zwei Elementen besteht (die vertikale Leiste würde erscheinen, wenn die beiden Punkte die gleiche Höhe teilen); Die zweite und letzte Ebene würde die Punkte der Zellen auf jeder Seite der vertikalen Linie enthalten. Übrigens ist dieses Bild das erste Ergebnis beim Googlen von "Voronoi treemaps"; siehe http://www-hagen.informatik.uni-kl.de/~kerren/courses/lecture/ws06/infovis/papers/VoronoiTreemapInfoVis2005.pdf – AticusFinch

Antwort

1

James Tauber ein Tutorial zu schreiben, die JavaScript und Fortune's algorithm verwendet ein Voronoi-Diagramm in einem canvas Element zu zeichnen: Voronoi Canvas Tutorial

Es ist noch nicht vollenden (er Teil sind 3 von 4), aber es gibt genug dort, um es zu vervollständigen denke ich.

+0

Panzer !!.aber ich möchte beschränkte Voronoi zeichnen; und treemaps ... – freddiefujiwara

2

gerade diese Seite gefunden. Ich habe an einem Voronoi-Demo-Applet mit Javascript/Canvas gearbeitet, nachdem ich eine C# -Version von Steven Fortunes Algorithmus von Benjamin Dittes in Javascript übersetzt habe (verfügbar unter Code Project, siehe "Voronoi-Algorithmus von Fortune in C# implementiert"). Hier ist die Seite, die Fortunes Voronoi-Algorithmus in Javascript enthält: http://www.raymondhill.net/voronoi/voronoi.php Dies ist eine erste Iteration, ich plane, sie weiter anzupassen, um besser für Javascript geeignet zu sein. Hoffe das hilft.

+0

Super! Danke für den Link :) – conradkdotcom

2

Zunächst einmal sind die Linien nicht fremd : Es ist das Ergebnis der Tatsache, dass dies keine normale Voronoi-Tessellation ist, sondern eine flächengewichtete Voronoi (AWT) -Tessellation, möglicherweise sogar eine zentroidale Voronoi-Tessellation (CVT). Um Voronoi-Regionen (Polygone) mit signifikant unterschiedlichen Bereichen zu haben (was ein Attribut der Daten widerspiegeln würde), benötigen Sie AWTs (vorzugsweise implementiert als CVTs, um schöne Seitenverhältnisse für die Polygone beizubehalten); Ein normaler Voronoi-Algorithmus (wie von einigen Personen oben vorgeschlagen) kann Ihnen nicht helfen. Es gibt wahrscheinlich keine direkte Lösung dafür, insbesondere nicht für Skriptsprachen, da die rechnerische Komplexität aufgrund von iterativen Aktualisierungsschritten für AWTs ziemlich hoch ist. Sie sollten die Arbeit zu "Voronoi Treemaps" und "Dynamic Voronoi Treemaps" von Balzer et al. und Sud et al. um eine Vorstellung von dem Algorithmus zu bekommen und ihn dann selbst zu implementieren (alles, was Sie brauchen, ist in ihren Papieren).

1

Die neueste Version (2.0) von Macrofocus TreeMap hat unter anderem den Voronoi-Algorithmus als Option.