2013-05-28 6 views
8

Ich suche eine Bibliothek, zu der Knoten und Kanten geliefert werden können und die eine Koordinatenliste aller Knoten erzeugt, die gut angeordnet sind. Es sollte jedoch möglich sein, feste Positionen für einige, aber nicht alle Knoten zu liefern, die der Layout-Algorithmus berücksichtigen sollte.Knotendiagramm-Layout-Bibliothek für inkrementelle Graphen

Ich habe bisher versucht Graphviz (fdp, neato), die nicht in der Lage scheint, die Position bestimmter Knoten zu halten und das Layout um sie herum gebaut.

Die Bibliothek muss mit Python verwendbar sein, also sollte es entweder python oder c/C++ sein, damit wir unsere eigene Bindung schreiben können.

Die folgenden Bilder zeigen genau, wonach ich suche (das ist das uDraw-Projekt, das scheinbar nicht als Bibliothek existiert).

uDraw incremental layout

+1

Haben Sie eine Lösung für dieses Problem gefunden? –

+0

Ich arbeite an etwas ähnlichem mit partiellen Graphen in einem 3D-Raum, aber es ist schwer. Sie müssen die Koordinaten relativ zu den größeren Knoten irgendwie speichern, es sei denn, Sie möchten bei jeder Aktualisierung die gesamten Diagrammdaten an die Clients senden. Ich habe noch keine Lösung. Hast du etwas Nützliches gefunden? – inf3rno

Antwort

1

Sie können dies in umgekehrter in graphviztun, wenn das nützlich für Sie ist. Um dies zu tun, würden Sie zuerst das Diagramm der rechten Seite und dann das Diagramm der linken Seite mit den Knoten 15, 16 und 17 auf style=invis plotten. Das würde Ihnen das gleiche Layout geben, wie es hier gezeigt wird.

Ein Problem, das ich mit dem Zeichnen der linken Grafik zuerst wahrnehmen konnte, ist, dass die Software (dot oder etwas anderes) natürlich versuchen würde, einen "gut aussehenden" Graphen ohne die Knoten 15, 16 und 17 zu zeichnen lassen Sie nicht genügend Platz, damit die Knoten 15, 16 und 17 später eingebaut werden können. Wenn wir beispielsweise versuchen würden, einen Knoten 12a zwischen den Knoten 11 und 12 einzufügen, wäre in den oben gezeigten Graphen kein Platz für diesen Knoten. Wenn andererseits der Knoten 12a ursprünglich geplottet wurde, aber nicht sichtbar, würde die Software den Platz dafür zuweisen, wo er später aufgenommen werden könnte.