GraphPlot.jl icon indicating copy to clipboard operation
GraphPlot.jl copied to clipboard

Add multiple edges between two vertices - For causal loop diagrams

Open PeterNorlindh opened this issue 5 years ago • 7 comments

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.

PeterNorlindh avatar Jul 12 '19 08:07 PeterNorlindh

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. )

sbromberger avatar Jul 12 '19 14:07 sbromberger

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?

PeterNorlindh avatar Jul 12 '19 16:07 PeterNorlindh

I don't see where any of those diagrams in your link above require multiple edges between two vertices, though.

sbromberger avatar Jul 12 '19 16:07 sbromberger

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!

PeterNorlindh avatar Jul 12 '19 16:07 PeterNorlindh

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.

simonschoelly avatar Jul 12 '19 20:07 simonschoelly

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.

sbromberger avatar Jul 14 '19 15:07 sbromberger

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!

PeterNorlindh avatar Jul 15 '19 07:07 PeterNorlindh