2
votes

Consider a simple dendrogram like

dend <- 1:5 %>% dist %>% hclust %>% as.dendrogram

How can I annotate the distance (height) on the nodes? I looked up the dendextend package but it does not offer such a feature. However, I know I can the list of these distances from

heights <- as.list(dend %>% get_nodes_attr("height"))

Any help is highly appreciated.

2
To annotate the nodes, you could use with(pvclust:::hc2axes(as.hclust(dend)), text(x.axis, y.axis, y.axis, pos = 1)) .lukeA

2 Answers

1
votes

Here's a simple example using hc2axes from the pvclust package:

# install.packages("pvclust") # install package if needed
plot(hc <- hclust(dist( mtcars[1:10, ])))
with(pvclust:::hc2axes(hc), 
     text(x.axis, y.axis, round(y.axis, 2), adj = c(.5, 1))
)

enter image description here

0
votes

With the help from the comment one solution is:

heights <- get_nodes_attr(HC[[i]], "height")
heights <- as.list(sort(heights))
heights[which(heights ==0)] <- NULL
for (node in 1: length(heights)){
  with(pvclust:::hc2axes(as.hclust(dend)),
    text(x.axis[node], y.axis[node], pos = 1, sprintf("%.2f", heights[node]))) 
}