R使用DiagrammeR包创建节点链接图找不到create_nodes函数求解决及替代方案
报错原因与解决
create_nodes()、create_edges()为DiagrammeR v1.0版本前的旧函数,新版已从包中移除,替换为create_node_df()、create_edge_df(),调整后的可运行代码如下:
library(DiagrammeR) # 新版创建节点数据框 nodes <- create_node_df(n = 7, type = "number") # 新版创建边数据框 edges <- create_edge_df(from = c(1, 1, 2, 2, 3, 3), to = c(2, 3, 4, 5, 6, 7), rel = "leading to") graph <- create_graph(nodes_df = nodes, edges_df = edges, graph_attrs = "layout = dot", node_attrs = "fontname = Helvetica", edge_attrs = "color = gray20") # 查看图表 render_graph(graph)
如果确实需要使用旧版函数,可安装指定版本的包:
remotes::install_version("DiagrammeR", version = "0.9.2")
其他节点链接图绘制方案
对应你需要的层级树状节点链接图,还有以下3种常用实现方案:
- igraph方案
代码示例:library(igraph) edges <- data.frame(from = c(1,1,2,2,3,3), to = c(2,3,4,5,6,7)) g <- graph_from_data_frame(edges) # 设置树形布局渲染 plot(g, layout = layout_as_tree(g)) - ggraph方案(基于ggplot2语法)
可自定义样式程度高,适配ggplot2生态的各类拓展功能:library(ggraph) library(igraph) edges <- data.frame(from = c(1,1,2,2,3,3), to = c(2,3,4,5,6,7)) g <- graph_from_data_frame(edges) ggraph(g, layout = 'tree') + geom_edge_link() + geom_node_point(size = 8, fill = 'white', shape = 21) + geom_node_text(aes(label = name)) + theme_void() - DiagrammeR mermaid语法方案
无需手动构建节点、边数据,直接用声明式语法描述结构,代码更简洁:library(DiagrammeR) mermaid(" graph TD 1-->2 1-->3 2-->4 2-->5 3-->6 3-->7 ")

内容的提问来源于stack exchange,提问作者Ranji Raj
相关产品推荐
相关产品推荐

