【问题标题】:R/Python: Heirarchical clustering, dendrogram annotationR/Python:层次聚类、树状图注释
【发布时间】:2016-01-31 17:43:28
【问题描述】:

我想进行层次聚类并使用热图绘制经典树状图。在 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")

输出:Here

所需输出:Here

【问题讨论】:

  • 啊,抱歉错过了,那个。正在努力。

标签: python r hierarchical-clustering dendrogram dendextend


【解决方案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")

这会给你这样的东西:

【讨论】:

  • 谢谢!这似乎可以解决问题!现在我只需要了解,特别是“df %>% t %>% dist %>% hclust %>% as.dendrogram %>%”对我来说有点谜。
  • @Myggan 这只是在一行中创建距离矩阵、hclust 对象和树状图 - 您可以阅读有关管道运算符的更多信息%&gt;%here
  • 除了描述的解决方案之外,在heatmap.2中使用“ColSideColors”参数也可能有效
  • @lukeA 再次感谢,当我意识到它是一个管道时,它现在变得更有意义了(尽管人们会认为这是一个非常冗长的管道):)
猜你喜欢
  • 2018-11-26
  • 2014-12-14
  • 2012-08-08
  • 1970-01-01
  • 2014-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-03
相关资源
最近更新 更多