R语言树形图可视化:如何在节点中展示顶点属性信息?
在R树形图中展示节点属性的解决方案
一、改进现有igraph代码(无需换包)
igraph本身支持自定义节点标签,只需将需要展示的属性拼接为字符串,即可在图中显示所有信息:
library(igraph) df <- data.frame("node_name"=c("root", "root0", "root1", "root00", "root01", "root10", "root11"), "parent"=c("root", "root", "root", "root0", "root0", "root1", "root1"), "incident"=c(0, 0, 1, 0, 1, 0, 1), "rating"=c(1, 0.97, 1.02, 0.95, 0.99, 0.99, 1.09)) g <- igraph::graph_from_data_frame(d=df[, c("node_name", "parent")], vertices=df[, c("node_name", "incident", "rating")]) # 拼接节点标签,用换行分隔不同属性 V(g)$label <- paste(V(g)$node_name, paste("incident:", V(g)$incident), paste("rating:", V(g)$rating), sep = "\n") pdf("tree_with_attributes.pdf") plot(g, layout=layout_as_tree(g, flip.y=FALSE), vertex.label.cex=0.8, # 调整标签字号 vertex.label.dist=0) # 让标签贴近节点 dev.off()
二、使用ggtree包(基于ggplot2,灵活度更高)
ggtree是专门针对树形可视化的工具,支持直接映射节点属性,适配ggplot2的图层语法:
library(ggtree) library(tibble) # 转换数据为树形结构格式,移除root的自环 edges <- df[-1, c("parent", "node_name")] tree <- as.phylo.data.frame(edges, method = "user", node.label = df$node_name) # 绑定节点属性到树形数据中 tree$data <- df %>% select(node_name, incident, rating) %>% rename(label = node_name) # 绘制树形图,同时显示所有节点属性 ggtree(tree, layout = "rectangular") + geom_tiplab(aes(label = paste(label, "\nincident:", incident, "\nrating:", rating)), size = 3.5) + geom_nodelab(aes(label = paste(label, "\nincident:", incident, "\nrating:", rating)), size = 3.5) + theme_tree2()
三、使用DiagrammeR包(自定义程度高)
DiagrammeR通过类DOT语法定义图形,可精细控制节点内容和样式:
library(DiagrammeR) # 构建图形语法字符串 graph_str <- "digraph tree { graph [rankdir = TB] # 设置从上到下的布局 node [shape = box] # 节点使用矩形样式 " # 逐个添加带属性的节点 for(i in 1:nrow(df)){ node <- df[i,] graph_str <- paste0(graph_str, " ", node$node_name, " [label = \"", node$node_name, "\\nincident: ", node$incident, "\\nrating: ", node$rating, "\"];\n") } # 添加节点间的连接(跳过root的自环) for(i in 2:nrow(df)){ node <- df[i,] graph_str <- paste0(graph_str, " ", node$parent, " -> ", node$node_name, ";\n") } graph_str <- paste0(graph_str, "}") # 渲染并显示图形 grViz(graph_str)
内容的提问来源于stack exchange,提问作者Helen
相关产品推荐
相关产品推荐

