2015-10-31 105 views
0

我想进行分层聚类并绘制带有热图的经典树状图。在R中使用heatmap.2或heatmap.3是相当容易的,而且在python中看起来也很容易。然而,我没有真正找到一个好的解决方案是树的注释。R/Python:Heirarchical聚类,树状图注释

理想情况下,我想根据元数据为我的分支着色代码。假设我有5个不同类型的〜10K行,在聚类之后,我想要查看这些类型如何组合在一起。由于数据量的原因,标记每行并不可行。

基于簇/距离对树进行着色似乎不是不可能的,但那不是我想要的。

用于彩色的分级矢量既可以是单独的列或rownames中的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") 

输出:Here

所需的输出:Here

+0

啊,对不起错过了,那。在它上面工作。 – Myggan

回答

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") 

它给你这样的事情:

enter image description here

+0

谢谢!这似乎是诀窍! 现在我只需要明白,特别是“df%>%t%>%dist%>%hclust%>%as.dendrogram%>%”对我来说有点谜。 – Myggan

+0

@Myggan这只是在一行中创建了距离矩阵,hclust对象和树状图 - 您可以阅读更多关于管道运算符'%>%'[here](https://cran.r-project.org/web/packages /magrittr/vignettes/magrittr.html)。 – lukeA

+0

除了描述的解决方案之外,它还可能使用heatmap.2中的“ColSideColors”参数.2 –