2015-10-31 107 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 –