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?

    @simontatham pretty sure there's a way to run graphiz that just adds the vertex location information to the dot file, and you can modify those by hand, and then generate the image.. I don't remember how.. try -Tdot maybe? https://graphviz.org/docs/outputs/canon/

  • 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 how complex of a graph, and is the interactive portion a hard requirement? I'm slightly biased towards TiKZ, as it lets me define nodes, edges, and their attributes declaratively. It's not exactly interactive, but if you have a decent LaTeX editor then at least you can see the result of your graph declaration quickly, and I find that it minimizes the amount of tinkering I need to do while constructing charts. There are also markdown-targeted libraries like Mermaid that claim to do the same. I don't particularly like them, but I'd be negligent if I didn't at least mention them.

    For truly interactive tools you're probably going to need to dip into commercial solutions. Visio is the classic offering for Microsoft systems. OSX's equivalent is OmniGraffle. And the online equivalent is Lucidchart.

  • 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 perhaps not exactly the answer to your question, but spytial[https://github.com/sidprasad/spytial] allows you to specify layout constraints that are dispatched to an smt solver and generates diagrams that obey those layout constraints. Probably a bit more work on your side as you’d have to specify what constraints you want, but it’s a pretty low effort tool for what it achieves. It also allows you to drag stuff around and restructures the diagram to ensure it maintains the constraints. I’ve personally not used it for anything but small examples and demos, but it looks promising!

  • @simontatham how complex of a graph, and is the interactive portion a hard requirement? I'm slightly biased towards TiKZ, as it lets me define nodes, edges, and their attributes declaratively. It's not exactly interactive, but if you have a decent LaTeX editor then at least you can see the result of your graph declaration quickly, and I find that it minimizes the amount of tinkering I need to do while constructing charts. There are also markdown-targeted libraries like Mermaid that claim to do the same. I don't particularly like them, but I'd be negligent if I didn't at least mention them.

    For truly interactive tools you're probably going to need to dip into commercial solutions. Visio is the classic offering for Microsoft systems. OSX's equivalent is OmniGraffle. And the online equivalent is Lucidchart.

    @claus TikZ is actually what I'm going to want to end up with, so any other output format will need to be translated into it in the end anyway! But I want to quickly try out a lot of layouts until I find one that's clear, before I hand-code a TikZ representation of it.

    The kind of graph size I have in mind is something along these lines:
    https://www.chiark.greenend.org.uk/~sgtatham/quasiblog/aperiodic-transducers/#p2-transducer
    It won't be that exact graph, but it will be a couple of graphs of that general size and complexity.

    In particular there will probably be a fundamental symmetry of the graph which I'll want the layout to reveal rather than obscuring. (That's true of this example too, but you can't see it at all in the tangle Graphviz made!)

  • oblomov@sociale.networkundefined oblomov@sociale.network shared this topic
  • @claus TikZ is actually what I'm going to want to end up with, so any other output format will need to be translated into it in the end anyway! But I want to quickly try out a lot of layouts until I find one that's clear, before I hand-code a TikZ representation of it.

    The kind of graph size I have in mind is something along these lines:
    https://www.chiark.greenend.org.uk/~sgtatham/quasiblog/aperiodic-transducers/#p2-transducer
    It won't be that exact graph, but it will be a couple of graphs of that general size and complexity.

    In particular there will probably be a fundamental symmetry of the graph which I'll want the layout to reveal rather than obscuring. (That's true of this example too, but you can't see it at all in the tangle Graphviz made!)

    @simontatham I see. In that case the least effort approach would likely be Lucidchart. I did a quick check and they offer a 7 day trial, which might be enough to learn the ropes and play around with your diagram.

  • 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 there IS some amount of control that the user can exert on how things are placed and arcs are drawn (ranks etc). Depending on your specific needs this may or may not be sufficient

  • @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.

    @loopspace @simontatham Yeah, I think this is the easiest way: of you ask for output in dot or xdot format (using -Tdot or -Txdot on the command line), you get position information which you can then tweak.


Gli ultimi otto messaggi ricevuti dalla Federazione
Post suggeriti
  • 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
  • il lato oscuro del mannaggia

    Uncategorized
    2
    0 Votes
    2 Posts
    1 Views
    @muffa La minaccia mannaggia
  • I've been saying this

    Uncategorized
    16
    0 Votes
    16 Posts
    0 Views
    Yes, it also disappoints me at times, because I see lots of effort over trying to figure out how to engage AP developers better — with minimal results, and meanwhile the Bluesky people are just seemingly having a ball over there riding on inertia. In addition to work I'm doing trying to improve interop between threadiverse apps, I do try to help by providing DevOps style support for those looking to integrate AP. Perhaps there's more I can do, I just don't know what it is.