Я хочу раскрасить ветви дендрограммы на основе значения в столбце кадра данных, используемого в функции hclust.
Прежде чем пометить этот вопрос как дубликат, как это было сделано в этом вопросе , который ссылается на этот вопрос . Обратите внимание, что это на самом деле никогда не было полностью учтено в ответе. Легко раскрасить ветви на основе топологии дендрограммы, но я не могу понять, как раскрасить ветви на основе столбца в кадре данных, который использовался в функции hclust
.
Я пытался использовать пакет dendextend двумя очень похожими способами:
library(dendextend)
par(mar = c(2,1,0,8)) #make sure the whole plot is on the page
hc <- hclust(dist(mtcars)) #cluster dataframe based on distance
dend <- as.dendrogram(hc) #use dendextend to create dendrogram
dend2 <- color_branches(dend, col = mtcars$cyl) #attempt but fail at coloring branches
plot (dend2, horiz = TRUE) #plot dendrogram
и
dend3 <- assign_values_to_leaves_edgePar(dend, value = mtcars$cyl, edgePar = "col") #attempt but fail at coloring branches
plot (dend3, horiz = TRUE) #plot dendrogram
замена mtcars$cyl
на factor(mtcars$cyl
также не решает проблему.
Оба эти решения создают дендрограмму, которая не окрашена должным образом.
Похоже, что он упорядочивает цвета снизу вверх в верхней части дендрограммы, основываясь на порядке значений в столбце цил, но поскольку ветви больше не находятся в этом порядке, раскраска не имеет никакого смысла. Я бы предпочел не сортировать фрейм данных для решения этой проблемы.
Спасибо.