it-swarm.com.de

Graph Auto-Layout-Algorithmus

Um das Problem zu vereinfachen, habe ich ein Diagramm, das Knoten und Kanten enthält, die sich auf einer 2D-Ebene befinden.

Ich möchte in der Lage sein, auf eine Schaltfläche zu klicken und das Diagramm automatisch so zu gestalten, dass es sauber aussieht. Damit meine ich minimales Überkreuzen von Kanten, schönen Abstand zwischen Knoten, vielleicht sogar die Grafikskala darstellen (gewichtete Kanten).

Ich weiß, dass dies völlig subjektiv für ein sauber aussehendes Diagramm ist, aber kennt jemand einen Algorithmus, um damit zu beginnen, anstatt das Rad neu zu erfinden?

Vielen Dank.

59
Cheetah

Ich würde vorschlagen, dass Sie einen Blick auf graphviz werfen. Das Programm dot kann eine Spezifikation eines Graphen nehmen und ein Bild des Netzwerks für Sie etwas "sauber" erzeugen. Der "Theorie" -Link auf dieser Seite enthält einige Links, die relevant sein können, wenn Sie sich für den theoretischen Hintergrund interessieren.

19
Noufal Ibrahim

Sie finden http: // graphdrawing.org / und Dieses Tutorial von Roberto Tamassia , Professor an der Brown University, ist recht hilfreich.

Ich mag viele erzwungene Techniken (S. 66-72 im Tutorial) wie den Spring Embedder .

Sie nehmen an, dass zwischen zwei benachbarten Knoten eine Feder oder eine andere Kraft vorhanden ist, und lassen die Natur (Simulation) die Arbeit machen :)

74
ypercubeᵀᴹ

Auch JGraph wenn Sie die Layouts in Java (Ich arbeite am Projekt) wollen.

4
David

Ich würde sagen, als Noufal Ibrahim, aber Sie könnten auch genauer auf die C-API des graphviz -Projekts schauen. Es enthält eine Bibliothek zum Erstellen Ihres Diagramms ( libgraph.pdf ) mit allen Knoten und Kanten und eine Bibliothek zum Layouten des Diagramms ( libgvc.pdf ) (jeweils nur berechnen Knotenposition), damit Sie diese beispielsweise in Ihrer eigenen Benutzeroberfläche anzeigen können.

2
jslap

Eine gute visuelle Anleitung, wie die beliebtesten Layouts tatsächlich aussehen: Folgen Sie dem Link

1
Diana Jobs