2017-07-03 64 views
0

我正在使用“ComplexHeatmap”包创建矩阵中相关性的热图。 我想用我自己的聚类的热图的树状图,所以我运行下面的代码:,使用“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)或绘图(colcluster),它们是相同的。

我想得到一个对称的热图。 任何想法为什么发生这种情况? 谢谢

回答

0

使用rowclust = colclust。

无需转置。

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