Zettelkasten Forum


Using GraphViz to Build Complex Models Bottom-Up • Zettelkasten Method

imageUsing GraphViz to Build Complex Models Bottom-Up • Zettelkasten Method

When you can't see the whole of a complex issue yet, model it bottom-up: keep a GraphViz note of reinforcing and balancing relationships, research each link in its own note, and let the model of the whole assemble as a byproduct.

Read the full story here

Comments

  • edited October 20

    I also had positive experiences with diagram-as-code tools like GraphViz, PlantUML and Mermaid. They nicely complement a digital Zettelkasten because one can quickly visualize relationships. They nicely complement Markdown because they are text first.

    In Obsidian I use built-in Mermaid for that effect. This is how the post's example could be implemented in Mermaid:

    flowchart TD
        Will -->|+| Deterrents
        Will -->|+| Incentives
        Will -->|+| Action{"Action"}
    
        Deterrents -.->|-| Action
        Deterrents -.->|-| TN["Threshold for<br/>negentropy perception"]
    
        Incentives -->|+| Action
        Incentives -->|+| ID["Incentive density"]
    
        ID -->|+| TN
    
        Action -.->|-| Energy
        Energy -->|+| Action
    
        Action -->|+| Reward
        Reward -->|+| Conditioning
        Conditioning -->|+| HabitAccount
    
        Action -->|+| HabitAccount
        HabitAccount -->|+| Action
        HabitAccount -->|+| DP["Desensitization<br/>to pain"]
        DP -->|+| SE["Self-esteem"]
    

    It looks like this:

    Personally, I prefer words to +/- symbols. I learned from Novak's concept maps that a lot of insight can be gained by verbalizing the relationship. The quality of the relationship is still indicated by the stroke. For example like this:

    Diagram-as-code tools are useful. However, they can't handle too much complexity. At some point one needs to draw a chart manually for a more refined layout.

  • edited October 21

    I found a community plugin that renders GraphViz diagrams in Obsidian. Same idea:

    Here's the source code:

    digraph G {
    
        Will -> Deterrents [taillabel = "+"]
        Will -> Incentives [taillabel = "+"]
        Will -> Action [taillabel = "prompts"]
    
        Deterrents -> Action [taillabel="discourage" color=red style="dashed" labelfontcolor=red]
        Deterrents -> TN [taillabel = "reduce" color=red style="dashed" labelfontcolor=red]
        TN [label="Threshold for\nnegentropy perception"]
    
        Incentives -> Action [taillabel = "encourage"]
        Incentives -> ID [headlabel = "increase"]
        ID [label="Incentive density"]
    
        // cf. the dopamine hypothesis [[201808210933]]
        ID -> TN [taillabel = "increase"]
    
        Action [shape="diamond"]
        Action -> Energy [headlabel = "costs" color=red style="dashed" labelfontcolor=red]
        Energy -> Action [taillabel = "fuels"]
    
        Action -> Reward [headlabel = "as"]
        Reward -> Conditioning [headlabel = "positive\nreinforcement"]
        Conditioning -> HA [taillabel = "strengthens"]
        HA [label="active\nhabits" shape="doublecircle"]
    
        Action -> HA [label = "mutually\nfacilitate" dir="both"]
        HA -> DA [taillabel = "can lead to"]
        DA [label="Desensitization\nto pain"]
    
        // [[202307221041]]
        DA -> "Self-esteem" [headlabel = "increases"]
    }
    

    I learned that GraphViz is an excellent alternative to Mermaid in Obsidian. Thanks!

Sign In or Register to comment.