2015-11-09 4 views
5

У меня есть дендрограмма в R. Она основана на иерархической кластеризации с использованием hclust. Я окрашиваю ярлыки, которые различны в разных цветах, но когда я пытаюсь изменить метки моей дедукции (к строкам данных, на которых основан кластер), используя dendrogram = dendrogram %>% set("labels", dataframe$column), метки заменяются, но в неправильных положениях. В качестве примера:Как изменить метки дендрограммы в r

Мой дендрограммы выглядит следующим образом:

___|___ 
|  _|_ 
|  | | 
|  1 0 
2 

, когда я теперь попробуйте изменить ярлыки, как указано выше, метки изменяются, но они применяются слева направо в порядке их в dataframe , Если мы предположим, мой первоначальный dataframe выглядит следующим образом

df: 
    Column1 Column2 
0  1  A 
1  2  B 
2  3  C 

, что я хочу, чтобы это:

___|___ 
    |  _|_ 
    |  | | 
    |  B A 
    C 

Но то, что я на самом деле получаю:

___|___ 
    |  _|_ 
    |  | | 
    |  B C 
    A 

кластеризация данных и их превращение в дендрограмму осуществлялось следующим образом:

> d <- stringdistmatrix(df$Column1, df$Column1) 
> cl <- hclust(as.dist(d)) 
> dend = as.dendrogram(cl) 

Может ли кто-нибудь сказать мне, как я могу пометить свою дендрограмму значениями другого столбца на основе индекса?

ответ

3

В созданном hclust объекте, который вы создали, cl, у вас есть элемент с именем «порядок», который содержит порядок, в котором элементы находятся в дендрограмме.

Если вы хотите изменить метки, необходимо поместить новые этикетки в том же порядке (cl$order), так что «новая» дендрограмма прав:

df$column2[cl$order] 
+0

Кажется работать. Я не могу сказать точно, поскольку теперь некоторые из моих ярлыков отрезаны от дендрограммы (поскольку они являются «длинными» строками), когда я использую сюжет (dend). Любая идея, что я могу сделать, чтобы исправить это? Спасибо за ваш ответ :-) –

+1

@sequence_hard вы можете попытаться уменьшить 'cex' или увеличить поле (или немного обоих ;-)) – Cath

+1

a downvote? почему нет. Но «почему», тем не менее, заинтересовало меня ... – Cath

4

The dendextend package позволяет напрямую обновлять дендрограммы (а также hclust), используя следующее:

x <- c(1:5) 
dend <- as.dendrogram(hclust(dist(x))) 

if(!require(dendextend)) install.packages("dendextend") 
library("dendextend") 

labels(dend) 
labels(dend) <- c(21:25) 
labels(dend) 

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

  • Нет связанных вопросов^_^