如何在 r 中更改树状图标签
How to change dendrogram labels in r
我在 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)
谁能告诉我如何根据索引用另一列的值标记我的树状图?
在您创建的 hclust
对象中,cl
,您有一个名为 "order" 的元素,其中包含元素在树状图中的顺序。
如果要更改标签,需要将新标签按相同的顺序排列(cl$order
),所以"new"树状图是正确的:
df$column2[cl$order]
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)
我在 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)
谁能告诉我如何根据索引用另一列的值标记我的树状图?
在您创建的 hclust
对象中,cl
,您有一个名为 "order" 的元素,其中包含元素在树状图中的顺序。
如果要更改标签,需要将新标签按相同的顺序排列(cl$order
),所以"new"树状图是正确的:
df$column2[cl$order]
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)