6

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

我的树状图如下所示:

 ___|___
|      _|_
|     |   | 
|     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)

谁能告诉我如何根据索引用另一列的值标记我的树状图?

4

2 回答 2

6

dendextend 包允许您使用以下命令直接更新树状图(以及 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)
于 2015-11-10T06:53:18.077 回答
5

hclust您创建的对象中cl,您有一个名为“order”的元素,其中包含元素在树状图中的顺序。

如果要更改标签,则需要以相同的顺序放置新标签(cl$order),因此“新”树状图是正确的:

df$column2[cl$order]
于 2015-11-09T14:37:35.020 回答