【发布时间】:2020-10-17 08:27:30
【问题描述】:
我正在寻找一种有效的方法来绘制从数据中获得的树状图,但在相应的距离矩阵而不是原始数据旁边。我一直很好奇不同的论文如何展示这一点,似乎他们所做的只是分别绘制热图和树状图并在图像编辑软件中处理它们。希望下面的代码能清楚地说明我想要什么。 假设我生成以下数据并使用 Pearson 相关性作为距离度量并使用完整链接作为聚类得到层次聚类:
library(gplots)
set.seed(2)
x <- matrix(rnorm(100), nrow = 5)
dist.fn <- function(x) as.dist(1-cor(t(x)))
hclust.com <- function(x) hclust(x, method="complete")
h.ori <- heatmap.2(x, trace="none", distfun=dist.fn, hclustfun=hclust.com,dendrogram = "row",main = "Fig1")
h.ori$rowInd
# 1 3 5 4 2
现在我可以绘制相应的距离矩阵,按 Fig1 中的树状图对其行和列进行排序:
colfunc <- colorRampPalette(c("red", "white", "yellow")) #not really necessary
dmat <- cor(t(x))[h.ori$rowInd,h.ori$rowInd]
heatmap.2(dmat,Rowv = NULL,Colv = "Rowv",scale = 'none',
dendrogram='none',trace = 'none',density.info="none",
labRow = h.ori$rowInd, labCol = h.ori$rowInd,
col=colfunc(20))
这是我的问题:如何将 Fig1 中绘制的树状图添加到 Fig2 中的树状图上(最好同时沿列和行)?目的是查看树状图生成的聚类,对于块模型,这将是一种很好的可视化方式。 另外作为一个附带问题,我知道如何使用 ggplot2 库绘制热图,即使用 geom_tile()。有没有办法使用 ggplot2 做我想做的同样的事情?
【问题讨论】: