Create a tibble (or data frame) with each row representing an edge.
data <- tibble::tribble(
~from, ~to,
"A", "B",
"B", "C"
)The default layout option, "tree" uses the tree layout
from {igraph}.
ggflowchart(data, layout = "tree")
If you’d prefer a horizontal, left-to-right, flowchart simply set
horizontal = TRUE:
ggflowchart(data, layout = "tree", horizontal = TRUE)
If you want more control over where the nodes are positioned, you can
specify layout = "custom". If you choose this option, you
must have a column named x and a column
named y in node_data (alongside
name) specifying the coordinates of the centre of each
node.
node_data <- tibble::tribble(
~name, ~x, ~y,
"A", 1, 3,
"B", 2, 2,
"C", 3, 1
)
ggflowchart(data, node_data = node_data, layout = "custom")
This means you can also create layouts using other functions or
packages. For example, you could create a custom layout using
igraph::layout_nicely() and pass it into
node_data:
library(dplyr)
# generate edges
data <- tibble::tribble(
~from, ~to,
"A", "B",
"A", "C",
"A", "D"
)
# use a different layout from {igraph}
g <- igraph::graph_from_data_frame(
select(data, c(from, to)),
directed = TRUE
)
coords <- igraph::layout_as_star(g)
colnames(coords) <- c("x", "y")
node_data <- tibble::as_tibble(coords) %>%
mutate(name = igraph::vertex_attr(g, "name"))
# create flowchart
ggflowchart(data, node_data = node_data, layout = "custom")
Some of these alternative layouts (especially ones from {igraph}), may eventually become additional layout options within {ggflowchart}. Note that the placement of the arrows may work better with some layout options than others.
