require(igraph) require(tidygraph) require(ggraph) #------------------------------------------------------------------------------# edges <- data.frame( from = c(rep("ROOT", 6), rep(c("CLASS A","CLASS B","CLASS C","CLASS D","CLASS E","CLASS F"), each = 20)), to = c(c("CLASS A","CLASS B","CLASS C","CLASS D","CLASS E","CLASS F"), paste0("A",1:20), paste0("B",1:20), paste0("C",1:20), paste0("D",1:20), paste0("E",1:20),paste0("F",1:20)), stringsAsFactors = FALSE) #------------------------------------------------------------------------------# g <- graph_from_data_frame(edges, directed = TRUE) ggraph(as_tbl_graph(g), layout = "dendrogram", circular = TRUE) + geom_edge_diagonal(aes(color = after_stat(index)), alpha = 0.6, width = 0.8) + geom_node_point(size = 3) + geom_node_text(aes(label = name), angle = -90, hjust = 0, size = 3) + theme_void()
library(ggraph) library(tidygraph) library(igraph) hierarchies_data <- data.frame( from = c( "flare", "flare", "flare", # 根节点分出 "animate", "animate", "animate", # animate的子节点 "display", "display", # display的子节点 "physics", "physics", "physics" # physics的子节点 ), to = c( "animate", "display", "physics", # 第一层级 "Easing", "interpolate", "Tween", # animate下的具体类 "DirtySprite", "TextSprite", # display下的具体类 "DragForce", "GravityForce", "Spring" # physics下的具体类 ) ) # 2. 转换为 tbl_graph 对象 graph <- as_tbl_graph(hierarchies_data) # 2. 绘图 ggraph(graph, layout = 'dendrogram', circular = FALSE) + geom_edge_diagonal(aes(alpha = ..index..), colour = "lightgray") + # 贝塞尔曲线连接 geom_node_point(colour = "steelblue", size = 2) + geom_node_text(aes(label = name), hjust = -0.1, size = 3) + theme_void() + coord_flip() # 旋转方向使其从左向右生长

