【发布时间】:2017-10-02 11:20:30
【问题描述】:
我想要这样的东西
我已经将包 Diagrammer 和 Visnetwork 用于其他图表,因此使用相同的包将是一个好处。
library(DiagrammeR)
library(visNetwork)
from=c("A","A","A","A","B","B","B","C","C","D")
to=c("B","C","D","E","C","D","E","D","E","E")
nodesd=c("A","B","C","D","E")
使用制图师:
nodes <- create_node_df( n=length(nodesd), label=nodesd, width=0.3)
edges <- create_edge_df(from = factor(from, levels=nodesd), to = factor(to, levels=nodesd), rel = "leading_to")
graph <- create_graph(nodes_df = nodes, edges_df = edges)
render_graph(graph)
我也尝试过 set_node_position() 但似乎没有任何区别。
使用 Visnetwork
nodes <- data.frame(id=nodesd, label= nodesd )
edges <- data.frame(from=from, to =to, length=150)
visNetwork(nodes,edges, width="100%" , height="100%") %>%
visNodes(shape = "circle") %>% visEdges(arrows = 'to', smooth =T)
我可以手动拖动它们,但如果你有很多图表,这不是你想做的事情,而且结果也不好。
我必须通过添加行来使用 visnetwork 垂直执行此操作
%>% visHierarchicalLayout()
最后。但是效果不好,因为很多边消失了。
如果我想获得水平对齐,我需要将其添加到节点定义中。
level = c(1,1,1,1,1)
【问题讨论】:
-
也欢迎使用 TikZ、igraph... 的其他解决方案