`dag_paths`

finds open paths between a given exposure and outcome.
`ggdag_paths`

and `ggdag_paths_fan`

plot all open paths. See
`dagitty::paths()`

for details.

## Usage

```
dag_paths(
.dag,
from = NULL,
to = NULL,
adjust_for = NULL,
limit = 100,
directed = FALSE,
paths_only = FALSE,
...
)
ggdag_paths(
.tdy_dag,
from = NULL,
to = NULL,
adjust_for = NULL,
limit = 100,
directed = FALSE,
shadow = TRUE,
...,
size = 1,
edge_type = c("link_arc", "link", "arc", "diagonal"),
node_size = 16,
text_size = 3.88,
label_size = text_size,
text_col = "white",
label_col = "black",
edge_width = 0.6,
edge_cap = 8,
arrow_length = 5,
use_edges = TRUE,
use_nodes = TRUE,
use_stylized = FALSE,
use_text = TRUE,
use_labels = FALSE,
text = NULL,
label = NULL,
node = deprecated(),
stylized = deprecated()
)
ggdag_paths_fan(
.tdy_dag,
from = NULL,
to = NULL,
adjust_for = NULL,
limit = 100,
directed = FALSE,
...,
shadow = TRUE,
spread = 0.7,
size = 1,
node_size = 16,
text_size = 3.88,
label_size = text_size,
text_col = "white",
label_col = "black",
edge_width = 0.6,
edge_cap = 8,
arrow_length = 5,
use_edges = TRUE,
use_nodes = TRUE,
use_stylized = FALSE,
use_text = TRUE,
use_labels = FALSE,
text = NULL,
label = NULL,
node = deprecated(),
stylized = deprecated()
)
```

## Arguments

- .dag, .tdy_dag
input graph, an object of class

`tidy_dagitty`

or`dagitty`

- from
character vector of length 1, name of exposure variable. Default is

`NULL`

, in which case it will check the input DAG for exposure.- to
character vector of length 1, name of exposure variable. Default is

`NULL`

, in which case it will check the input DAG for exposure.- adjust_for
character vector, a set of variables to control for. Default is

`NULL`

.- limit
maximum amount of paths to show. In general, the number of paths grows exponentially with the number of variables in the graph, such that path inspection is not useful except for the most simple models.

- directed
logical. Should only directed paths be shown?

- paths_only
logical. Should only open paths be returned? Default is

`FALSE`

, which includes every variable and edge in the DAG regardless if they are part of the path.- ...
additional arguments passed to

`tidy_dagitty()`

- shadow
logical. Show edges which are not on an open path?

- size
A numeric value scaling the size of all elements in the DAG. This allows you to change the scale of the DAG without changing the proportions.

- edge_type
The type of edge, one of "link_arc", "link", "arc", "diagonal".

- node_size
The size of the nodes.

- text_size
The size of the text.

- label_size
The size of the labels.

- text_col
The color of the text.

- label_col
The color of the labels.

- edge_width
The width of the edges.

- edge_cap
The size of edge caps (the distance between the arrowheads and the node borders).

- arrow_length
The length of arrows on edges.

- use_edges
A logical value. Include a

`geom_dag_edges*()`

function? If`TRUE`

, which is determined by`edge_type`

.- use_nodes
A logical value. Include

`geom_dag_point()`

?- use_stylized
A logical value. Include

`geom_dag_node()`

?- use_text
A logical value. Include

`geom_dag_text()`

?- use_labels
A logical value. Include

`geom_dag_label_repel()`

?- text
The bare name of a column to use for

`geom_dag_text()`

. If`use_text = TRUE`

, the default is to use`name`

.- label
The bare name of a column to use for

`geom_dag_label_repel()`

. If`use_labels = TRUE`

, the default is to use`label`

.- node
Deprecated.

- stylized
Deprecated.

- spread
the width of the fan spread

## Examples

```
confounder_triangle(x_y_associated = TRUE) %>%
dag_paths(from = "x", to = "y")
#> # A DAG with 3 nodes and 6 edges
#> #
#> # Exposure: x
#> # Outcome: y
#> #
#> # A tibble: 9 × 10
#> set name x y direction to xend yend circular path
#> <chr> <chr> <int> <int> <fct> <chr> <int> <int> <lgl> <chr>
#> 1 1 x 0 0 -> y 2 0 FALSE open path
#> 2 1 y 2 0 NA NA NA NA FALSE open path
#> 3 1 z 1 1 -> x 0 0 FALSE NA
#> 4 1 z 1 1 -> y 2 0 FALSE NA
#> 5 2 x 0 0 -> y 2 0 FALSE NA
#> 6 2 y 2 0 NA NA NA NA FALSE open path
#> 7 2 z 1 1 -> x 0 0 FALSE open path
#> 8 2 z 1 1 -> y 2 0 FALSE open path
#> 9 2 x 0 0 NA NA 2 0 FALSE open path
confounder_triangle(x_y_associated = TRUE) %>%
ggdag_paths(from = "x", to = "y")
butterfly_bias(x_y_associated = TRUE) %>%
ggdag_paths_fan(shadow = TRUE)
```