Единственный способ, который я нашел, заключается в манипулировании форматом dot
перед передачей его в grViz
. Здесь я заменяю параметры макета по умолчанию на макет dot
и переворачиваю его, добавляя rankdir = LR.
DiagrammeR::generate_dot(graph) %>%
gsub(pattern = 'neato',replacement = 'dot',x= .) %>%
gsub(pattern = "graph \\[",'graph \\[rankdir = LR,\n',x = .)%>%
grViz
Так в вашем случае
n <- structure(list(task = c("1", "2", "3", "4", "5", "6", "7", "8",
"A", "B", "C")), .Names = "task", row.names = c(NA, -11L), class = "data.frame")
e <- structure(list(from = c("A", "1", "2", "4", "B", "3", "C", "5"
), to = c("1", "2", "4", "8", "3", "6", "5", "7")), .Names = c("from",
"to"), row.names = c(NA, -8L), class = "data.frame")
create_graph() %>%
add_nodes_from_table(table=n,label_col = task) %>%
add_edges_from_table(table=e,from_col = from,to_col = to,from_to_map = label) %>%
set_node_attrs(
node_attr = "shape",
values = "square",
) %>%
set_node_attrs(
node_attr = 'fontcolor',
values = 'black'
) %>%
generate_dot() %>%
gsub(pattern = 'neato',replacement = 'dot',x= .) %>%
gsub(pattern = "graph \\[",'graph \\[rankdir = LR,\n',x = .,perl = TRUE) %>%
grViz()
Обратите внимание, что я добавил еще один set_node_attrs
, чтобы явно установить черный цвет шрифта. В противном случае цвет шрифта по умолчанию светло-серый.