Ваша функция правильная, правда. «Плохой результат» - фактически ваш первый a_graph %>% render_graph()
в строке 7, и никакие дальнейшие графики не были вызваны, следовательно, результат. Чтобы увидеть это, вы можете стереть сюжет до того, как вы пройдете for(i in 1:5) update_my_graph(i,'Start')
. Вы увидите, что сюжет не выводится. И после того, как вы сделали пять обновлений, вы можете снова позвонить a_graph %>% render_graph(layout = "tree")
, и вы увидите, что он дал вам тот результат, который вы хотели. Сама функция не печатает сюжет.
Следовательно, просто сделать следующее:
update_my_graph <- function(label, label_from){
from_id <- which((a_graph %>% get_node_df())$label==label_from)
a_graph <<- a_graph %>%
select_nodes(conditions = type == 'actif') %>%
set_node_attrs_ws(node_attr = fillcolor, value = "blue") %>%
clear_selection() %>%
add_node(label = label, from = from_id, type = 'actif',
node_aes = node_aes(fillcolor = "orange",
shape = "rectangle",
fixedsize = FALSE))
print(a_graph %>% render_graph(layout = "tree"))
}
То есть просто положите print
вокруг a_graph %>% render_graph(layout = "tree")
. Вы также можете сделать return(a_graph %>% render_graph(layout = "tree"))
и вызвать сохраненный график.