Skip to contents

Tidy a dagitty object

Usage

tidy_dagitty(.dagitty, seed = NULL, layout = "nicely", ...)

Arguments

.dagitty

a dagitty

seed

a numeric seed for reproducible layout generation

layout

a layout available in ggraph. See ggraph::create_layout() for details. Alternatively, "time_ordered" will use time_ordered_coords() to algorithmically sort the graph by time.

...

optional arguments passed to ggraph::create_layout()

Value

a tidy_dagitty object

Examples

library(dagitty)
library(ggplot2)

dag <- dagitty("dag {
  Y <- X <- Z1 <- V -> Z2 -> Y
  Z1 <- W1 <-> W2 -> Z2
  X <- W1 -> Y
  X <- W2 -> Y
  X [exposure]
  Y [outcome]
  }")

tidy_dagitty(dag)
#> # A DAG with 7 nodes and 12 edges
#> #
#> # Exposure: X
#> # Outcome: Y
#> #
#> # A tibble: 13 × 8
#>    name      x        y direction to      xend     yend circular
#>    <chr> <dbl>    <dbl> <fct>     <chr>  <dbl>    <dbl> <lgl>   
#>  1 V     2.34  -1.34    ->        Z1     2.40   0.0749  FALSE   
#>  2 V     2.34  -1.34    ->        Z2     0.924 -1.33    FALSE   
#>  3 W1    1.09   0.830   ->        X      1.46   0.328   FALSE   
#>  4 W1    1.09   0.830   ->        Y      0.257  0.00275 FALSE   
#>  5 W1    1.09   0.830   ->        Z1     2.40   0.0749  FALSE   
#>  6 W1    1.09   0.830   <->       W2     0.791 -0.335   FALSE   
#>  7 W2    0.791 -0.335   ->        X      1.46   0.328   FALSE   
#>  8 W2    0.791 -0.335   ->        Y      0.257  0.00275 FALSE   
#>  9 W2    0.791 -0.335   ->        Z2     0.924 -1.33    FALSE   
#> 10 X     1.46   0.328   ->        Y      0.257  0.00275 FALSE   
#> 11 Y     0.257  0.00275 NA        NA    NA     NA       FALSE   
#> 12 Z1    2.40   0.0749  ->        X      1.46   0.328   FALSE   
#> 13 Z2    0.924 -1.33    ->        Y      0.257  0.00275 FALSE   

tidy_dagitty(dag, layout = "fr") %>%
  ggplot(aes(x = x, y = y, xend = xend, yend = yend)) +
  geom_dag_node() +
  geom_dag_text() +
  geom_dag_edges() +
  theme_dag()