GraphPlot.jl
GraphPlot.jl copied to clipboard
Add multiple edges between two vertices - For causal loop diagrams
GraphPlot.jl is nearly applicable for causal loop diagrams modeling and analysis. Adding support for multiple edges between two vertices would be a valuable/amazing step in this direction.
Not sure what advantage this brings since you can’t model the underlying graph with any current packages. (No package supports multiedges at this time. )
Hmm, that's a shame.
I don't know anything about graph theory... Are multiedges relevant, and likely to be supported at some point in the future?
Would you recommend starting a separate repository for causal loop diagrams?
I don't see where any of those diagrams in your link above require multiple edges between two vertices, though.
That's a very good point :)
I'm inspired by a book that illustrates how to make use of parallel streams between stacks. This could be a stream of money in one direction and a stream of information in return. Two-way arrows might be a solution, but I'm not sure it's versatile enough.
I'll work with what I've got and see how that turns out in practice.
Thanks for your responses by the way!
Things move a bit slowly here, as people's time is restricted, so I can't see support for multigraphs in the near future here.
Maybe you can check out GraphRecipes.jl? Looks like someone just added that functionality there.
edges from u
to v
and v
to u
are permitted simultaneously with directed graphs. This is "money (u->v
) in one direction and information (v->u
) in return", so that's absolutely possible today with any digraph.
If you need "money" and "influence" in one direction and "information" in return, then you could create such a structure as a metagraph, but you'd have the "money" and "influence" labels on the same rendered edge, not on two separate drawn lines.
Much appreciated!
@simonschoelly, I will definitely explore GraphRecipes.jl. It looks relevant! I'll continue to research what repos are already available and the relationships between them, but it's a somewhat vertical learning curve for me :)
Btw, I'm playing with the idea of creating a SystemsEngineering.jl project, -to make already available code more accessible to complexity-geek-novice-programmers like myself, if nothing else. I'm certainly not the ideal person to do it, though... I need to find some more experienced developer(s) to help me, or the whole thing will fall flat on its face :) We'll see how that goes.
@sbromberger, I was thinking the same thing. And I believe it's an adequate approach in ways, but not ideal for visualizing traditional causal loop diagrams. It's compact and to-the-point, but causes inconsistencies in how different loops are visualized. This may be taxing cognitively. I'll play with it and see how it feels..
Again, thank you for taking the time to think about this!