使用“ComplexHeatmap”包的热图树形图

时间:2017-07-03 21:07:05

标签: cluster-analysis heatmap dendrogram

我正在使用“ComplexHeatmap”包来创建矩阵中相关性的热图。 我想将自己的聚类用于热图的树形图,因此我运行以下代码:

library(ComplexHeatmap);
mat = matrix(rnorm(800),80,10);
cor.mat= cor(mat)
dist.mat = (1-cor.mat)/2;
rowdist = dist(as.matrix(dist.mat), method = "euclidean")
rowcluster = hclust(rowdist, method = "ward.D2")
coldist = dist(t(as.matrix(dist.mat)), method = "euclidean")
colcluster = hclust(coldist, method = "ward.D2")
par(mfrow=c(1,2));plot(rowcluster);plot(colcluster);
Heatmap(cor.mat ,cluster_rows=rowcluster, cluster_columns=colcluster)

问题是,尽管集群对象是相同的,但我对行和列进行了不同的聚类(不对称)。 即使我传递Heatmap函数的行和列完全相同的对象,它仍然显示行和列的不同顺序。 如果我只是创建树形图,即绘图(rowcluster)或plot(colcluster),它们是相同的。

我想得到一个对称的热图。 知道为什么会这样吗? 感谢

1 个答案:

答案 0 :(得分:1)

使用rowclust = colclust。

无需转置。

但请注意,你已经有了一个距离矩阵,所以"欧几里得"是错的。您正在计算距离矩阵的距离矩阵!