seq*_*ard 6 label r cluster-analysis dendrogram dendextend
我在R中有一个树形图.它基于使用hclust的分层聚类.我正在着色不同颜色的标签,但是当我尝试更改我的dedrogram的标签(到集群所基于的数据帧的行)时,使用dendrogram = dendrogram %>% set("labels", dataframe$column)标签被替换,但是在错误的位置.例如:
我的树形图看起来像这样:
___|___
| _|_
| | |
| 1 0
2
Run Code Online (Sandbox Code Playgroud)
当我现在尝试更改上面指定的标签时,标签会更改,但它们会按照数据框中的顺序从左到右应用.如果我们假设我的原始数据框看起来像这样
df:
Column1 Column2
0 1 A
1 2 B
2 3 C
Run Code Online (Sandbox Code Playgroud)
我想要的是这个:
___|___
| _|_
| | |
| B A
C
Run Code Online (Sandbox Code Playgroud)
但我真正得到的是:
___|___
| _|_
| | |
| B C
A
Run Code Online (Sandbox Code Playgroud)
数据的聚类及其转化为树状图的过程如下:
> d <- stringdistmatrix(df$Column1, df$Column1)
> cl <- hclust(as.dist(d))
> dend = as.dendrogram(cl)
Run Code Online (Sandbox Code Playgroud)
谁能告诉我如何用基于索引的另一列的值标记我的树状图?
在hclust您创建的对象中cl,有一个名为“order”的元素,其中包含元素在树状图中的顺序。
如果要更改标签,则需要按相同顺序放置新标签 ( cl$order),因此“新”树状图是正确的:
df$column2[cl$order]
Run Code Online (Sandbox Code Playgroud)
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)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4835 次 |
| 最近记录: |