15

Ich habe eine große gerichtete azyklische Grafik, die ich in einem Bitmap-Bild visualisieren möchte.Visualisierung einer DAG

Idealerweise hätte ich gerne alle Wurzelknoten oben im Bild und alle Blattknoten unten, d. H. Die Graphenkanten, zeigen alle nach unten.

Gibt es einen guten Algorithmus für die Berechnung der Koordinaten aller Knoten, die diese Einschränkungen erfüllen und eine gute Visualisierung erzeugen?

Antwort

12

Ich empfehle Ihnen, Gephi zu verwenden.

Dieser Soft ist in der Lage, all die Dinge zu tun, die Sie wollen, insbesondere Graph Layouts!

+0

Das ist ein sehr cooles Tool - vielen Dank für den Link !! – mikera

+0

Gern geschehen! –

7

Schauen Sie sich die Graphviz Software-Sammlung an. Es enthält mehrere Programme zum Rendern von Graphen.

Die einfachste Möglichkeit besteht darin, Ihr Diagramm in einem der Graphviz-Textformate auf Festplatte zu schreiben. Führen Sie dann eines der Render-Programme aus und laden Sie das resultierende Bild in Ihre Anwendung.

3

Bayesianische Netzwerke haben ähnliche Anforderungen. Sie können nach Algorithmen für Bayes-Netzwerke suchen. This paper zum Beispiel könnte hilfreich sein.

0

Sie könnten sich für eine mehrschichtige Graphzeichnung (auch bekannt als "hierarchische Graphzeichnung" oder "Sugiyama-artige Graphzeichnung") interessieren. Der Algorithmus ist zu lang, um hier zu beschreiben, aber Google-Suchen bringen viele zuverlässige Erklärungen hervor.

0

können Sie versuchen, diese Go-Paket Ich schrieb: https://github.com/h8liu/e8tools/tree/master/dagvis

Ein Beispiel: http://lonnie.io/gostd/dagvis/

+0

Beachten Sie, dass [Link-Only-Antworten] (http://meta.stackoverflow.com/tags/link-only-answers/info) nicht empfohlen werden. SO-Antworten sollten der Endpunkt einer Suche nach einer Lösung sein (vs. ein weiterer Zwischenstopp von Referenzen, die im Laufe der Zeit abgestanden werden). Bitte denken Sie daran, hier eine eigenständige Synopsis hinzuzufügen, die den Link als Referenz enthält. – kleopatra

+0

Sie sollten mindestens eine kurze Beschreibung in der Antwort schreiben, wie @kleopatra sagt. – urfusion