Using GraphViz to Build Complex Models Bottom-Up • Zettelkasten Method
Using 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.
Howdy, Stranger!
Categories
- 3K All Categories
- 153 Research & Reading
- 709 The Zettelkasten Method
- 12 Knowledge Work
- 102 Writing
- 475 Software & Gadgets
- 161 Workflows
- 734 The Archive
- 16 Plug-In Showcase
- 88 Resolved Issues
- 225 Projects Logs and Journals
- 86 Project: Zettelkasten.de
- 53 Critique my Zettel
- 181 Random
- 376 Introduce Yourselves!
Comments
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.
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!