Skip to content

Piero Bosio Social Web Site Personale Logo Fediverso

Social Forum federato con il resto del mondo. Non contano le istanze, contano le persone

Dear Lazyfedi, can anyone recommend a software tool for hand-directed graph layout?

Uncategorized
27 21 1
  • Dear Lazyfedi, can anyone recommend a software tool for hand-directed graph layout?

    If I have a graph (say, of a finite state machine or something), I can write it in Graphviz DOT format and feed it to xdot, which will do a complete job of layout: decide where the nodes go, figure out some nice curved paths for the edges so they don't go through other nodes or cross over too often.

    But if it doesn't do a good enough job, I don't know of any way to slightly tweak its output. As far as I know there's no way I can overrule its decisions about where to put the vertices, but still have it do the rest of the job for me like drawing all the edges. If I'm not 100% happy with its own choices, I have to do the whole thing myself instead.

    Anyone know of a good interactive tool that will let me drag the vertices around, and automatically move the edges with them?

  • Dear Lazyfedi, can anyone recommend a software tool for hand-directed graph layout?

    If I have a graph (say, of a finite state machine or something), I can write it in Graphviz DOT format and feed it to xdot, which will do a complete job of layout: decide where the nodes go, figure out some nice curved paths for the edges so they don't go through other nodes or cross over too often.

    But if it doesn't do a good enough job, I don't know of any way to slightly tweak its output. As far as I know there's no way I can overrule its decisions about where to put the vertices, but still have it do the rest of the job for me like drawing all the edges. If I'm not 100% happy with its own choices, I have to do the whole thing myself instead.

    Anyone know of a good interactive tool that will let me drag the vertices around, and automatically move the edges with them?

    (I have considered the option of using 'Untangle' from my puzzle collection! Encode my graph as an Untangle game description; drag the vertices around in the game until it looks reasonable; recover their final positions from a saved game file. But Untangle only knows how to draw straight-line edges, and can't make the edges swerve around things that are in the way.)

  • Dear Lazyfedi, can anyone recommend a software tool for hand-directed graph layout?

    If I have a graph (say, of a finite state machine or something), I can write it in Graphviz DOT format and feed it to xdot, which will do a complete job of layout: decide where the nodes go, figure out some nice curved paths for the edges so they don't go through other nodes or cross over too often.

    But if it doesn't do a good enough job, I don't know of any way to slightly tweak its output. As far as I know there's no way I can overrule its decisions about where to put the vertices, but still have it do the rest of the job for me like drawing all the edges. If I'm not 100% happy with its own choices, I have to do the whole thing myself instead.

    Anyone know of a good interactive tool that will let me drag the vertices around, and automatically move the edges with them?

    @simontatham no, but i tend to use dia

  • Dear Lazyfedi, can anyone recommend a software tool for hand-directed graph layout?

    If I have a graph (say, of a finite state machine or something), I can write it in Graphviz DOT format and feed it to xdot, which will do a complete job of layout: decide where the nodes go, figure out some nice curved paths for the edges so they don't go through other nodes or cross over too often.

    But if it doesn't do a good enough job, I don't know of any way to slightly tweak its output. As far as I know there's no way I can overrule its decisions about where to put the vertices, but still have it do the rest of the job for me like drawing all the edges. If I'm not 100% happy with its own choices, I have to do the whole thing myself instead.

    Anyone know of a good interactive tool that will let me drag the vertices around, and automatically move the edges with them?

    @simontatham

    have you tried drawio? But it's more like Visio

    https://www.drawio.com

  • @dysfun yes, I've used that once in a similar context – unlike Inkscape, it understands the idea of an arrow being attached to a box so that dragging the box moves the arrow endpoint too. But I think it has the same problem as my silly idea of using Untangle: only straight edges, where I'm likely to need them to curve.

  • @dysfun yes, I've used that once in a similar context – unlike Inkscape, it understands the idea of an arrow being attached to a box so that dragging the box moves the arrow endpoint too. But I think it has the same problem as my silly idea of using Untangle: only straight edges, where I'm likely to need them to curve.

    @simontatham it's got beziers

  • @dysfun yes, I've used that once in a similar context – unlike Inkscape, it understands the idea of an arrow being attached to a box so that dragging the box moves the arrow endpoint too. But I think it has the same problem as my silly idea of using Untangle: only straight edges, where I'm likely to need them to curve.

    @simontatham @dysfun dia can do Bézier lines, but that may well not be enough.
    In Graphviz there's the "pos" attribute for nodes, but that only works in neato and tdp.

  • Dear Lazyfedi, can anyone recommend a software tool for hand-directed graph layout?

    If I have a graph (say, of a finite state machine or something), I can write it in Graphviz DOT format and feed it to xdot, which will do a complete job of layout: decide where the nodes go, figure out some nice curved paths for the edges so they don't go through other nodes or cross over too often.

    But if it doesn't do a good enough job, I don't know of any way to slightly tweak its output. As far as I know there's no way I can overrule its decisions about where to put the vertices, but still have it do the rest of the job for me like drawing all the edges. If I'm not 100% happy with its own choices, I have to do the whole thing myself instead.

    Anyone know of a good interactive tool that will let me drag the vertices around, and automatically move the edges with them?

    @simontatham I love OmniGraffle for this, but it's commercial Mac-only software (and one of the reasons why I'm still on macOS...)

  • Dear Lazyfedi, can anyone recommend a software tool for hand-directed graph layout?

    If I have a graph (say, of a finite state machine or something), I can write it in Graphviz DOT format and feed it to xdot, which will do a complete job of layout: decide where the nodes go, figure out some nice curved paths for the edges so they don't go through other nodes or cross over too often.

    But if it doesn't do a good enough job, I don't know of any way to slightly tweak its output. As far as I know there's no way I can overrule its decisions about where to put the vertices, but still have it do the rest of the job for me like drawing all the edges. If I'm not 100% happy with its own choices, I have to do the whole thing myself instead.

    Anyone know of a good interactive tool that will let me drag the vertices around, and automatically move the edges with them?

    @simontatham yeahhhhh this was the problem that got us wanting to write our own diagram editor, twenty years ago

    (we didn't finish, so we don't have it to offer)

  • Dear Lazyfedi, can anyone recommend a software tool for hand-directed graph layout?

    If I have a graph (say, of a finite state machine or something), I can write it in Graphviz DOT format and feed it to xdot, which will do a complete job of layout: decide where the nodes go, figure out some nice curved paths for the edges so they don't go through other nodes or cross over too often.

    But if it doesn't do a good enough job, I don't know of any way to slightly tweak its output. As far as I know there's no way I can overrule its decisions about where to put the vertices, but still have it do the rest of the job for me like drawing all the edges. If I'm not 100% happy with its own choices, I have to do the whole thing myself instead.

    Anyone know of a good interactive tool that will let me drag the vertices around, and automatically move the edges with them?

    @simontatham do you know about PlantUML? Or is that the wrong direction of tooling?

  • Dear Lazyfedi, can anyone recommend a software tool for hand-directed graph layout?

    If I have a graph (say, of a finite state machine or something), I can write it in Graphviz DOT format and feed it to xdot, which will do a complete job of layout: decide where the nodes go, figure out some nice curved paths for the edges so they don't go through other nodes or cross over too often.

    But if it doesn't do a good enough job, I don't know of any way to slightly tweak its output. As far as I know there's no way I can overrule its decisions about where to put the vertices, but still have it do the rest of the job for me like drawing all the edges. If I'm not 100% happy with its own choices, I have to do the whole thing myself instead.

    Anyone know of a good interactive tool that will let me drag the vertices around, and automatically move the edges with them?

    @simontatham It's been a while since I used graphviz in depth, but I think you can get it to produce a .dot file of its result which you could then edit and feed back in.

  • Dear Lazyfedi, can anyone recommend a software tool for hand-directed graph layout?

    If I have a graph (say, of a finite state machine or something), I can write it in Graphviz DOT format and feed it to xdot, which will do a complete job of layout: decide where the nodes go, figure out some nice curved paths for the edges so they don't go through other nodes or cross over too often.

    But if it doesn't do a good enough job, I don't know of any way to slightly tweak its output. As far as I know there's no way I can overrule its decisions about where to put the vertices, but still have it do the rest of the job for me like drawing all the edges. If I'm not 100% happy with its own choices, I have to do the whole thing myself instead.

    Anyone know of a good interactive tool that will let me drag the vertices around, and automatically move the edges with them?

    @simontatham
    yEd from yWorks might be an option.

    http://www.yWorks.com/

  • Dear Lazyfedi, can anyone recommend a software tool for hand-directed graph layout?

    If I have a graph (say, of a finite state machine or something), I can write it in Graphviz DOT format and feed it to xdot, which will do a complete job of layout: decide where the nodes go, figure out some nice curved paths for the edges so they don't go through other nodes or cross over too often.

    But if it doesn't do a good enough job, I don't know of any way to slightly tweak its output. As far as I know there's no way I can overrule its decisions about where to put the vertices, but still have it do the rest of the job for me like drawing all the edges. If I'm not 100% happy with its own choices, I have to do the whole thing myself instead.

    Anyone know of a good interactive tool that will let me drag the vertices around, and automatically move the edges with them?

    @simontatham It's been a bit since I last used it, but I think I remember https://www.drawio.com/ being usable for this purpose. (It looks like they're promoting an OpenAI integration at the top of their front page now, but at a quick glance I think the tool itself is still okay.)

  • Dear Lazyfedi, can anyone recommend a software tool for hand-directed graph layout?

    If I have a graph (say, of a finite state machine or something), I can write it in Graphviz DOT format and feed it to xdot, which will do a complete job of layout: decide where the nodes go, figure out some nice curved paths for the edges so they don't go through other nodes or cross over too often.

    But if it doesn't do a good enough job, I don't know of any way to slightly tweak its output. As far as I know there's no way I can overrule its decisions about where to put the vertices, but still have it do the rest of the job for me like drawing all the edges. If I'm not 100% happy with its own choices, I have to do the whole thing myself instead.

    Anyone know of a good interactive tool that will let me drag the vertices around, and automatically move the edges with them?

    @simontatham not exactly an interactive tool, but msc-generator has a "block diagram" mode where you describe positional constraints for nodes and edges in the source file (align a node to the top of another, put it below, to the left, ...).

    If you're ok with closed source tools, yWorks yED may do what you want. Place the nodes manually and then use Layout->Edge Routing with one of the proposed algorithms

  • Dear Lazyfedi, can anyone recommend a software tool for hand-directed graph layout?

    If I have a graph (say, of a finite state machine or something), I can write it in Graphviz DOT format and feed it to xdot, which will do a complete job of layout: decide where the nodes go, figure out some nice curved paths for the edges so they don't go through other nodes or cross over too often.

    But if it doesn't do a good enough job, I don't know of any way to slightly tweak its output. As far as I know there's no way I can overrule its decisions about where to put the vertices, but still have it do the rest of the job for me like drawing all the edges. If I'm not 100% happy with its own choices, I have to do the whole thing myself instead.

    Anyone know of a good interactive tool that will let me drag the vertices around, and automatically move the edges with them?

    @simontatham funnily enough I was solving this problem in work on monday (for a simpler issue); I was doing aws architectural diagrams using the python diagrams library (which is graphviz underneath). The diagrams are ugly because there's no constraints to say, these boxes should be on the same row or the same size. I ended up coding a table-based layout.

    Edges are more complex; to sidestep that issue entirely I use arcs of a circle (scaled so the centre of the arc would be one point of an equlateral triangle with the centres of the two connected boxes), then only draw the portion of the arc which doesn't intersect with the two boxes.

    Obviously that doesn't curve round things but since the boxes are all straight lines the edge curves are visually distinct, and since their curvature depends on the length of the edge the curves don't end up colinear either

    It seemed like some kind of constraint system would have been better (enforce some equality constraints on boxes, add some control points on edges and have them avoid each other too) but too much effort

  • @simontatham funnily enough I was solving this problem in work on monday (for a simpler issue); I was doing aws architectural diagrams using the python diagrams library (which is graphviz underneath). The diagrams are ugly because there's no constraints to say, these boxes should be on the same row or the same size. I ended up coding a table-based layout.

    Edges are more complex; to sidestep that issue entirely I use arcs of a circle (scaled so the centre of the arc would be one point of an equlateral triangle with the centres of the two connected boxes), then only draw the portion of the arc which doesn't intersect with the two boxes.

    Obviously that doesn't curve round things but since the boxes are all straight lines the edge curves are visually distinct, and since their curvature depends on the length of the edge the curves don't end up colinear either

    It seemed like some kind of constraint system would have been better (enforce some equality constraints on boxes, add some control points on edges and have them avoid each other too) but too much effort

    @bazzargh hmmm, the mention of a constraint system makes me suddenly remember @mjd's old blog posts about "linogram" and wonder if that could do anything like this job!

  • @simontatham do you know about PlantUML? Or is that the wrong direction of tooling?

    @maehw @simontatham yeah I've used plantuml for this kind of thing. It's not "drag and place a few things then let it figure out the rest", but you can set weights and stretchiness of the lines, and constrains like nodes that have to be in the same row, to get what you need.

    It can be a little unstable still.. get it just right then change a text label and suddenly everything flips to a different solution, but it's good at maintaining the rules for the kind of diagrams it knows how to draw.

    If you're a vscode user, there's a plugin that does live rendering as you type, which makes tweaking much easier

  • Dear Lazyfedi, can anyone recommend a software tool for hand-directed graph layout?

    If I have a graph (say, of a finite state machine or something), I can write it in Graphviz DOT format and feed it to xdot, which will do a complete job of layout: decide where the nodes go, figure out some nice curved paths for the edges so they don't go through other nodes or cross over too often.

    But if it doesn't do a good enough job, I don't know of any way to slightly tweak its output. As far as I know there's no way I can overrule its decisions about where to put the vertices, but still have it do the rest of the job for me like drawing all the edges. If I'm not 100% happy with its own choices, I have to do the whole thing myself instead.

    Anyone know of a good interactive tool that will let me drag the vertices around, and automatically move the edges with them?

    @simontatham

    This problem has bugged me for decades.

    I'm beginning to assume it's not actually as easy to solve as I think it should be.

  • Dear Lazyfedi, can anyone recommend a software tool for hand-directed graph layout?

    If I have a graph (say, of a finite state machine or something), I can write it in Graphviz DOT format and feed it to xdot, which will do a complete job of layout: decide where the nodes go, figure out some nice curved paths for the edges so they don't go through other nodes or cross over too often.

    But if it doesn't do a good enough job, I don't know of any way to slightly tweak its output. As far as I know there's no way I can overrule its decisions about where to put the vertices, but still have it do the rest of the job for me like drawing all the edges. If I'm not 100% happy with its own choices, I have to do the whole thing myself instead.

    Anyone know of a good interactive tool that will let me drag the vertices around, and automatically move the edges with them?

    @simontatham graphviz actually included a GUI editor, 'dotty', which can open .dot files and lets you drag nodes around. Unfortunately saving them doesn't save the positions but perhaps this wouldn't be hard to add? It uses a very old DSL they have since retired though so depends how game you are feeling. Just compiled graphviz 2.59.1 and had a working dotty at least

    edit: I thought it handled updating curved edges automatically but alas, I was wrong, sorry!

  • Dear Lazyfedi, can anyone recommend a software tool for hand-directed graph layout?

    If I have a graph (say, of a finite state machine or something), I can write it in Graphviz DOT format and feed it to xdot, which will do a complete job of layout: decide where the nodes go, figure out some nice curved paths for the edges so they don't go through other nodes or cross over too often.

    But if it doesn't do a good enough job, I don't know of any way to slightly tweak its output. As far as I know there's no way I can overrule its decisions about where to put the vertices, but still have it do the rest of the job for me like drawing all the edges. If I'm not 100% happy with its own choices, I have to do the whole thing myself instead.

    Anyone know of a good interactive tool that will let me drag the vertices around, and automatically move the edges with them?

    @simontatham You can often the "help" Graphviz layout engine by grouping so e nodes with invisible boxes, or forcing a primary layout direction or messing with node order.

    Some time ago, I let my desire to move the boxes around succumb to the need to have the drawing at all.

    Personally, I value an easily editable and diffable drawing specification over a pretty drawing.


Gli ultimi otto messaggi ricevuti dalla Federazione
Post suggeriti
  • Nadine Navigates a Gullywasher

    Uncategorized
    1
    1
    0 Votes
    1 Posts
    0 Views
    Nadine Navigates a Gullywasher
  • Sono molto emozionato.

    Uncategorized
    3
    0 Votes
    3 Posts
    2 Views
    @vanacksabbadium Siamo due fissati di Dune, io e Federico. :D
  • This post did not contain any content.

    Uncategorized
    2
    1
    0 Votes
    2 Posts
    0 Views
    @cldferrilab La figura di Ipazia d'Alessandria (c. 355-415 d.C.) è storicamente associata alla difesa della libertà di pensiero, della razionalità e della partecipazione civile, valori che si oppongono intrinsecamente all'astensione intesa come disimpegno, indifferenza o resa di fronte al dogmatismo e al fanatismo. il suo operato e la sua filosofia neoplatonica indicano una netta posizione contro l'astensione dalla responsabilità pubblica e intellettuale
  • Ciao!

    Uncategorized
    4
    0 Votes
    4 Posts
    3 Views
    @kenobit @cheero io non mi capacito che ci si sia abituatə a link in bio, link al primo commento, alita sullo schermo che ti compare il link con inchiostro simpatico che si autodistruggerà non appena inspiri... Per me l'unica difficoltà del fediverso è che non lo trovi pre-popolato dalla gente che conosci (ex compagnə di scuola, gente che vedi a lavoro o in palestra) o credi di conoscere (sindacə della tua città, chef dei programmi TV ecc.) Qui devi decidere account e hashtag da seguire