我有树状图和距离矩阵。我希望计算一个热图——无需重新进行距离矩阵和聚类。
R中是否有允许这样做的函数?
我有树状图和距离矩阵。我希望计算一个热图——无需重新进行距离矩阵和聚类。
R中是否有允许这样做的函数?
我不知道具体的功能。我使用的通常采用原始数据或距离矩阵。然而,破解已经存在的代码并不是很困难,不了解基本的 R。例如查看mixOmicscim()包中函数的源代码(我选择这个是因为源代码很容易阅读;你将在Bioconductor项目中找到其他功能)。代码中有趣的部分是 l。92-113,他们将 HC 的结果分配给和 l 附近。193-246 他们设计了绘图区域(当他们调用时,您应该输入距离矩阵的值代替 mat )。高温高压ddcimage()
编辑
最近对相关主题的 Google 搜索将我引向dendrogramGrob()了latticeExtra包。假设您已经有了排序的树状图对象,您可以从在线帮助中跳过示例代码的第一行并获得类似这样的内容(这里,使用mtcars数据集):

假设你也有原始数据,你可以使用函数 heatmap()。如果您想避免计算距离并再次对对象进行聚类,它可以将一两个树状图作为输入。
我们先模拟一些数据:
set.seed(1)
dat<-matrix(ncol=4, nrow=10, data=rnorm(40))
然后对行和列进行聚类:
rd<-dist(dat)
rc<-hclust(rd)
cd<-dist(t(dat))
cc<-hclust(cd)
在这之后我们有
1) 原始数据 (dat) 2) 原始数据矩阵行的距离矩阵 (rd) 和树状图 (rc) 3) 原始数据列的距离矩阵 (cd) 和树状图 (cc)
进一步的步骤实际上不需要距离矩阵,而是执行聚类的原始数据和生成的树状图。
使用原始数据,这些树状图可以用作函数 heatmap() 的输入。如果需要行和列树形图,请使用:
heatmap(dat, Rowv=as.dendrogram(rc), Colv=as.dendrogram(cc))
如果只需要行或列树状图,则使用 NA 作为 heatmap() 中 Rowv 或 Colv 参数的输入:
# Dendrogram for rows only
heatmap(dat, Rowv=as.dendrogram(rc), Colv=NA)
# Dendrogram for columns only
heatmap(dat, Rowv=NA, Colv=as.dendrogram(cc))
您可以尝试查看 maptree 或 ape 包。你想做什么?