Alternative zu GraphViz

  • Ich suche eine Alternative zu GraphViz, die es erlaubt, Knoten aufgrund ihrer Position auf dem Bildschirm zu sortieren. In GraphViz ist das nicht möglich, weil dort die dafür zuständigen Variablen und Methoden als "private" deklariert sind.

  • Wonach genau soll sortiert werden?


    Sobald es (mindestens) zweidimensional ist gibt es keine eindeutige Ordnung der Koordinaten mehr. Vermutlich ist das auch der Grund wieso GraphViz keine fix fertigen Methoden anbietet. Ich nehme an du hast irgendein custom criterion im Kopf, das man aber wohl mit jeder Bibliothek implementieren kann.

  • Nunja, man könnte zum Beispiel nach der Y-Koordinate sortieren, oder eben primär nach der Y- und sekundär nach der X-Koordinate. Wenn der Benutzer die Reihenfolge der Knoten ändern möchte, indem er den letzten Knoten stark nach oben verschiebt, ist relativ klar, was er damit meint. Genau das wird von GraphViz nicht berücksichtigt. Die Knoten werden zwar von oben nach unten in der Reihenfolge angezeigt, wie sie im Array gespeichert sind. Verschiebe ich aber einen Knoten, hat das keinen Einfluss auf die Reihenfolge im Array. Schließe ich das Fenster und öffne es erneut, werden die Knoten wieder in der ursprünglichen Reihenfolge angezeigt.


    Derzeit besteht aus Sicht des Benutzers die einzige Möglichkeit darin, Knoten zu löschen und wieder neu (in der gewünschten Reihenfolge) einzufügen. Das ist natürlich äußerst umständlich und unbefriedigend.

  • Nunja, man könnte zum Beispiel nach der Y-Koordinate sortieren, oder eben primär nach der Y- und sekundär nach der X-Koordinate.


    Das meine ich mit custom criterion.


    Zitat

    Wenn der Benutzer die Reihenfolge der Knoten ändern möchte, indem er den letzten Knoten stark nach oben verschiebt, ist relativ klar, was er damit meint. Genau das wird von GraphViz nicht berücksichtigt. Die Knoten werden zwar von oben nach unten in der Reihenfolge angezeigt, wie sie im Array gespeichert sind. Verschiebe ich aber einen Knoten, hat das keinen Einfluss auf die Reihenfolge im Array. Schließe ich das Fenster und öffne es erneut, werden die Knoten wieder in der ursprünglichen Reihenfolge angezeigt.


    Ich finde es macht Sinn die interne Repräsentation nicht zu ändern nur weil sich die Eigenschaften der Knoten (die Koordinaten) ändern. Es ist ja für den Benutzer im Prinzip egal wie die Objekte intern gespeichert werden.


    Wenn du für eine bestimmte Anwendung eine solche Sortierung brauchst, was spricht dagegen sie selbst vorzunehmen?

  • Mir ist nicht klar, warum du mein Problem nicht verstanden hast bzw. warum es für dich offenbar nicht nachvollziehbar ist.


    Ich kann eben von meinem Programm heraus nicht auf die Bildschirmpositionen zugreifen, weil diese in als "private" deklarierten Variablen gespeichert sind! Wenn ich das könnte, wäre die Angelegenheit trivial und ich hätte diesen Thread nicht gestartet.

  • Mir ist nicht klar, warum du mein Problem nicht verstanden hast bzw. warum es für dich offenbar nicht nachvollziehbar ist.


    Ich kann eben von meinem Programm heraus nicht auf die Bildschirmpositionen zugreifen, weil diese in als "private" deklarierten Variablen gespeichert sind! Wenn ich das könnte, wäre die Angelegenheit trivial und ich hätte diesen Thread nicht gestartet.


    I see. Es klang für mich oben so als ob du nach einer Möglichkeit zur automatischen Sortierung suchst. Wenn die Koordinaten auch nicht public sind, dann geht das natürlich nicht.


    Boost hat eine Graphenbibliothek dabei die ich verwende. Ich verwende es nicht für visuelles Layouting, aber es wird unterstützt, und einer kurzen Recherche nach kann es was du brauchst.


    Ansonsten, wenn es wirklich nur am access modifier liegt, vielleicht kann man das über einen Patch für die source-Version hinbiegen.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!