У меня есть иерархические данные в этой форме:
df <- data.frame(root=rep("unclustered",22),
itr1=paste0("1.",c(1,5,1,2,4,1,3,2,5,5,6,9,4,3,4,8,5,7,3,2,10,8)),
itr2=paste0("2.",c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,10,17,18,19,20,21)),
itr3=paste0("3.",c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22)),stringsAsFactors = F)
, которая описывает итеративное кластерное назначение точек данных - строк.Первый столбец, root
, назначает все точки корневому кластеру, затем каждый столбец представляет собой итерацию кластеризации, которая отбирает кластеры предыдущей итерации и разбивает их на дальнейшие подкластеры.
IЯ пытаюсь построить этот процесс, используя древовидную сеть.
Я знаю, что используя data.tree
, я могу просто сделать:
df$pathString <- do.call(paste,c(df,sep="/"))
df.graph <- data.tree::as.Node(df)
plot(df.graph)
Но я ищу что-то более изощренное, желательно с ggplot
внешним видом.
Поэтому я преобразовал df.graph
в igraph
объект:
df.igraph <- data.tree::as.igraph.Node(df.graph)
И пытался использовать ggraph
:
library(ggraph)
ggraph(df.igraph, 'igraph', algorithm = 'tree') +
geom_edge_link() +
ggforce::theme_no_axes()
Любая идея, как получить вариант ggraph
для включения узлов с ихнадписи, добавить стрелки к краям и, возможно, по-разному раскрасить каждый уровень?