如何更改r

时间:2015-11-09 14:16:45

标签: r label cluster-analysis dendrogram dendextend

我在R中有一个树形图。它基于使用hclust的分层聚类。我正在着色不同颜色的标签,但是当我尝试使用dendrogram = dendrogram %>% set("labels", dataframe$column)更改我的dedrogram的标签(到群集所基于的数据帧行)时,标签会被替换,但是位置错误。例如:

我的树状图看起来像这样:

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

当我现在尝试更改上面指定的标签时,标签会更改,但它们会按照数据框中的顺序从左到右应用。如果我们假设我的原始数据框看起来像这样

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)

有人可以告诉我如何使用基于索引的另一列的值来标记我的树形图吗?

2 个答案:

答案 0 :(得分:5)

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)

答案 1 :(得分:4)

在您创建的hclust对象cl中,您有一个名为&#34的元素; order&#34;它包含元素在树形图中的顺序。

如果您想更改标签,则需要按照相同的顺序(cl$order)放置新标签,以便&#34; new&#34;树形图是对的:

df$column2[cl$order]