我有以下内容tree
hierarchy
data.frame
:
hierarchy.df <- data.frame(raw=rep("Unclustered",26),
cluster.itr1="1.1,1.1,1.3,1.2,1.2,1.1,1.3,1.2,1.3,1.3,1.6,1.3,1.2,1.4,1.3,1.3,1.3,1.2,1.1,1.3,1.2,1.3,1.3,1.6,1.4,1.5",
cluster.itr2="2.1,2.2,2.3,2.4,2.4,2.1,2.5,2.6,2.7,2.8,2.9,2.3,2.10,2.11,2.5,2.8,2.12,2.13,2.14,2.3,2.4,2.15,2.8,2.16,2.17,2.18",
cluster.itr3="3.1,3.2,3.3,3.4,3.5,3.6,3.7,3.8,3.9,3.10,3.11,3.12,3.13,3.14,3.15,3.16,3.17,3.18,3.19,3.20,3.5,3.21,3.22,3.23,3.24,3.25",
cluster.itr3="4.1,4.2,4.3,4.4,4.5,4.6,4.7,4.8,4.9,4.10,4.11,4.12,4.13,4.14,4.15,4.16,4.17,4.18,4.19,4.20,4.21,4.22,4.23,4.24,4.25,4.26",
stringsAsFactors = F)
hierarchy.df$Unclustered
它描述了一个迭代聚类过程,我们从非聚类数据开始(当没有集群可以再分解为更精细的集群时,就达到了收敛。
在此示例中,经过 4 次迭代后达到收敛。
我正在尝试hierarchy
使用ggraph
包来绘制这个:
hierarchy.df$pathString <- do.call(paste,c(hierarchy.df,sep="/"))
hierarchy.graph <- data.tree::as.Node(hierarchy.df)
hierarchy.igraph <- data.tree::as.igraph.Node(hierarchy.graph)
igraph::V(hierarchy.igraph)$class <- names(igraph::V(hierarchy.igraph))
ggraph::ggraph(hierarchy.igraph,layout='tree')+
ggraph::geom_edge_link(arrow=arrow(length=unit(3,'mm')),end_cap=ggraph::circle(1,'mm'))+
ggraph::geom_node_label(aes(label=class))+theme_void()
所以这里的问题是迭代 1 的集群 1.3 从根指向上方,而不是与该迭代的所有其他集群齐平,因此树看起来很糟糕。
知道如何解决这个问题或使用另一个绘图包来做到这一点吗?