How DAGMakie compares
DAGMakie.jl draws causal DAGs, mixed graphs, and related diagrams with Makie. It is visualisation only: identification and estimation stay in CausalDynamics.jl / CausalInference.jl and CausalTargeted.jl.
Closest R tools are ggdag and dagitty plots. In Python, people typically glue networkx, matplotlib, graphviz, or CausalGraphicalModels.
Choose DAGMakie when you want layered causal themes, bidirected confounding, path highlighting, time-indexed layouts, or SWIG / DiD visual grammar in the same Makie stack as SciML and book figures.
Prefer ggdag / dagitty when your analysis is already tidyverse-centric, you need the dagitty web GUI, or a one-off ggplot is enough.
Stack overview: ECOSYSTEM_COMPARISON.md.
flowchart LR
subgraph juliaStack [Julia_typed_pipeline]
G[Graph_CDM] --> ID[identify_certificate]
ID --> SIM[simulate_counterfactual]
ID --> EST[LMTP_mediation]
ID --> PLOT[DAGMakie]
SIM --> EST
endLegend
| Mark | Meaning |
|---|---|
Yes | First-class, documented |
Partial | Possible with glue or a limited API |
— | Not in that package’s usual scope |
Unique | Strong differentiator here |
Versus R and Python (DAG visualisation)
| Capability | DAGMakie | R | Python |
|---|---|---|---|
| Layered causal DAG plot | Yes | Yes (ggdag, dagitty) | Partial (networkx / graphviz / CGMs) |
| Bidirected confounding arcs | Yes | Yes (ggdag / dagitty) | Partial |
| Path / adjustment / d-sep highlight | Yes (± CausalInference) | Yes (ggdag + dagitty) | Partial (DoWhy / CGMs) |
| Smart / dagitty-like ancestor colouring | Yes (smart=true) | Yes (dagitty) | Partial |
Display-only do(·) comparison figures | Yes | Partial (custom) | Partial (custom) |
| Time-indexed / unrolled layouts | Yes | Partial (custom ggplot) | Partial (custom) |
| SWIG / DiD / IDAG visual grammar | Unique | Partial (custom) | Partial (custom) |
| Same Makie stack as SciML figures | Unique | — | — |
| Graph GUI / interactive editor | — | Yes (dagitty web) | Partial |
Julia neighbours
| Package | Role |
|---|---|
| GraphMakie.jl | General graph plotting backend |
| CausalDynamics.jl | Identification sets consumed by plot helpers (comparison) |
| CausalTargeted.jl | Estimation (not plotted here) (comparison) |
What is distinctive here
- Causal diagram defaults — steel-blue themes, node roles, bidirected geometry
- Visual grammar — IDAG effect-measure nodes and DiD SWIG layouts (guide)
- Pipeline fit — figures sit next to SciML and Documenter
@examplechunks without leaving Julia
What is deliberately absent
Identification algorithms, estimation, and a dagitty-style GUI. Pass sets into dagplot_*, or load CausalInference / CausalDynamics when the plot should compute highlighting. See Causal analysis.
The CDCS book uses these figures in narrative context.