Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Causal Loop Diagrams #4453

Open
bbak opened this issue Jun 2, 2023 · 5 comments
Open

Causal Loop Diagrams #4453

bbak opened this issue Jun 2, 2023 · 5 comments
Labels
Status: Triage Needs to be verified, categorized, etc Type: Enhancement New feature or request Type: New Diagram

Comments

@bbak
Copy link

bbak commented Jun 2, 2023

Proposal

Please add Causal Loop Diagrams, because they are a preferred and well-known method, invented in the field of System Dynamics, to visualize and explore systems of causal relations between variables that may change over time.

As compared to the Flowchart Type, these would be the needed changes:

  • Edges should always be shaped like a section of a circle (or loop).
  • Positioning of nodes doesn't really have a direction like TD or similar; it could be more like inside-out or like Nodes at the top of the sourcecode have a tendency towards the center
  • Any edge must denote the type of relationship between two nodes: either via a label like S, O or +, - to indicate if the edge represents a positive (Same direction) or negative (Opposite direction) relationship or by utilizing different edge styles.
  • Ability to label loops: a variant of subsections may suit that.
  • Ability to indicate a delay on an edge.
  • The positioning of the nodes, and therefore length of the edges is quite important since the latter is an indicator for the duration of the (feedback-)loop.

Here are some resources regarding the construction of CLDs:

Use Cases

Well, any type of dynamic system can be visualized by CLD's hence there's a multitude of use cases across a multitude of fields.

Screenshots

Here's a CLD I've done myself using Kumu.io
image

Syntax

No response

Implementation

None

@bbak bbak added Status: Triage Needs to be verified, categorized, etc Type: Enhancement New feature or request Type: New Diagram labels Jun 2, 2023
@abitrolly
Copy link
Contributor

Some references from #177 (comment) by @a-y-u-s-h:

  1. Introduction to Systems Thinking (by Lund University)

  2. Existing Interactive Software for Causal Loop Diagrams - Loopy, by Nicky Case.

  3. A Philophical look at System Dynamics

Influence Diagrams are closely related but they can be built with flowcharts or graphs.

@dudung
Copy link

dudung commented Sep 24, 2023

Is it possible still using flowchart and with some elements styled using CSS, e.g. for reinforcing and balancing loop, time delayed, etc.?

@zcstarr
Copy link

zcstarr commented Jan 24, 2024

Here's the work that I've done to get mermaid to support it , I came up with a template for doing CLD in mermaid. It's super useful to be able to share these documents as code. The major blocker I think from full representation are Notes.

#821 (comment)

Here's the style guide I'm trying to standardize with mermaidjs to be used in alot of places
https://github.com/zcstarr/casually-looped

@abitrolly and @bbak I'd be curious what you think?

Here's a more full mermaid example

In this one because of the lack of notes we just use lines in the same direction with labels that say what they are

@abitrolly
Copy link
Contributor

@zcstarr it visually hard to compare flow chart diagram to circles used to depict casual loops. I also not sure if the format could be parsed by casual loop tools, which could be a nice feature for sharing and animating the dynamics.

@zcstarr
Copy link

zcstarr commented Jan 25, 2024

@zcstarr it visually hard to compare flow chart diagram to circles used to depict casual loops. I also not sure if the format could be parsed by casual loop tools, which could be a nice feature for sharing and animating the dynamics.

Not quite sure I understand, tbh I think animation is a different product. I've been thinking about using this as a description language and then going back and forth between a different system for say animating dynamics.

I think nloopy really isn't that hard to parse both directions ( It uses a graph itself). Really maybe the issue is also that there's an opportunity to do more complex things. That said with in the realm of causal loop diagrams, I've never read or seen a formal spec that uses magnitude in the description.

Perhaps there's an opportunity for us to make something more rigorous have you seen anyone set parameters for capturing that it in literature ?

My problem with loopy and mermaid also comes from size. If your diagram gets complex the universe for drawing the diagram can get pretty chaotic. For mermaid left to right flow chart style can get long and there's lots of crossing lines , which may not be too avoidable.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Status: Triage Needs to be verified, categorized, etc Type: Enhancement New feature or request Type: New Diagram
Projects
None yet
Development

No branches or pull requests

4 participants