0

我想进行层次聚类并使用热图绘制经典树状图。在 R 中使用 heatmap.2 或 heatmap.3 相当容易,并且在 python 中似乎也相当容易。但是,我并没有真正找到一个好的解决方案是树的注释。

理想情况下,我想根据元数据对我的分支进行颜色编码。假设我有 5 种不同类型的约 10k 行,在聚类之后,我想可视化这些类型如何组合在一起。由于数据量大,给每一行加标签是不可行的。

根据簇/距离为树着色似乎并非不可能,但这并不是我真正想要的。

颜色的分类向量可以是单独的列或行名的一部分

R och Python 中的解决方案并不重要。谢谢!

编辑:

例子:

library(gplots)
library(proxy)
df = data.frame(matrix(rnorm(100), nrow=10))
rownames(df) <- c("A_1","A_2","A_3","B_1","B_2","B_3","C_1","C_2","C_3","C_4")
df <- t(df)
distance.matrix.df <- dist(as.matrix(df), method='pearson')
clust.df1 <- hclust(distance.matrix.df, method = "average")
dend.dfc <- as.dendrogram(clust.df1)
heatmap.2(as.matrix(df), Rowv=dend.dfc, keysize=1, dendrogram="col", trace="none")

输出:这里

期望的输出:这里

4

1 回答 1

1

在 R 中,你可以这样尝试:

library(dendextend)
dend <- df %>% t %>% dist %>% hclust %>% as.dendrogram %>% 
  branches_attr_by_clusters(as.numeric(as.factor(substr(labels(.), 0, 1))), 
                            attr="col")
heatmap.2(as.matrix(df), Rowv=dend.dfc, Colv=dend, keysize=1, 
          dendrogram="col", trace="none")

这给了你这样的东西:

在此处输入图像描述

于 2015-10-31T13:03:23.723 回答