2016-01-21 2 views
4

Я пытаюсь разрезать эту дендрограмму на 3 группы: (T24, T1, T17 и т. Д.), (T12, T15, T6 и т. Д.) И (T2, T8, T3, T9)Резка дендрограмма в R

enter image description here

Я попытался с помощью cutree (Нс, K = 3, Н = 400), но она продолжает делать ту же группу. Любая помощь приветствуется. Вот мой код.

#temps must have date/time as column headers, not row headers 
load(temps) 
distMatrix <- dist(temps) 
#create label colors 
labelColors = c("#E41A1C", "#377EB8", "#4DAF4A", "#984EA3", "#FF7F00", "#FFFF33") 
# cut dendrogram in 3 clusters 
clusMember = cutree(hc, k=3, h=400) 
colLab <- function(n) { 
    if (is.leaf(n)) { 
    a <- attributes(n) 
    labCol <- labelColors[clusMember[which(names(clusMember) == a$label)]] 
    attr(n, "nodePar") <- c(a$nodePar, lab.col = labCol) 
    } 
    n 
} 
hcd = as.dendrogram(hc) 
clusDendro = dendrapply(hcd, colLab) 
plot(clusDendro, main = "Cluster Analysis") 
+1

Вы можете * т, потому что не высота (ось), которая представляет эти три группы. – lukeA

+1

Вы можете просто сделать меньшую высоту и впоследствии объединить группы. Документы для cuttree говорят, что если вы укажете 'k', это переопределяет' h', если оба даны. –

ответ

1

Вы, например, не воспроизводимы в том смысле, что у нас нет доступа к данным. Я могу сказать, что вы должны посмотреть на dendextend R package. Он предлагает функции для резки дендрограммы, а также раскраски этикеток и веток. Quick Introduction руководство показывает основное использование функций, таких как labels_colors и color_branches для получения участков, таких как это:

enter image description here

В вашем случае, так как ваши ветви, кажется, в одной и той же высоте, вы, вероятно, не имеют прямой контроль над их разрезами. Что вы можете сделать, это использовать branches_attr_by_clusters, чтобы специально контролировать цвета подкластеров, которые вам нужны. Вот пример:

x <- c(1:3, 6:8) 
dend <- as.dendrogram(hclust(dist(x), method = "ave")) 
library(dendextend) 
labels(dend) <- x[order.dendrogram(dend)] 

# due to the ties - there is specific reason to have this be these 3 clusters: 
cutree(dend, k = 3)[order.dendrogram(dend)] 

par(mfrow = c(1,2)) 
dend1 <- color_branches(dend, k = 3) 
dend1 <- color_labels(dend1, k = 3) 
plot(dend1, main = "default cuts by cutree") 
# let's force it to be another 3 clusters: 
dend2 <- branches_attr_by_clusters(dend, c(1, 2,2, 3,3,3), c("gold", "darkgreen", "blue")) 
# coloring the labels is actually the easiest part: 
labels_colors(dend2) <- c("gold", "darkgreen", "blue")[c(1, 2,2, 3,3,3)] 
plot(dend2, main = "Manual cuts") 

enter image description here

Смежные вопросы