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
  end

Legend

MarkMeaning
YesFirst-class, documented
PartialPossible with glue or a limited API
Not in that package’s usual scope
UniqueStrong differentiator here

Versus R and Python (DAG visualisation)

CapabilityDAGMakieRPython
Layered causal DAG plotYesYes (ggdag, dagitty)Partial (networkx / graphviz / CGMs)
Bidirected confounding arcsYesYes (ggdag / dagitty)Partial
Path / adjustment / d-sep highlightYes (± CausalInference)Yes (ggdag + dagitty)Partial (DoWhy / CGMs)
Smart / dagitty-like ancestor colouringYes (smart=true)Yes (dagitty)Partial
Display-only do(·) comparison figuresYesPartial (custom)Partial (custom)
Time-indexed / unrolled layoutsYesPartial (custom ggplot)Partial (custom)
SWIG / DiD / IDAG visual grammarUniquePartial (custom)Partial (custom)
Same Makie stack as SciML figuresUnique
Graph GUI / interactive editorYes (dagitty web)Partial

Julia neighbours

PackageRole
GraphMakie.jlGeneral graph plotting backend
CausalDynamics.jlIdentification sets consumed by plot helpers (comparison)
CausalTargeted.jlEstimation (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 @example chunks 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.