10

我正在尝试对蛋白质 dna 相互作用数据集进行聚类,并使用 R 包 gplots 中的 heatmap.2 绘制热图。这是我生成这些图的完整过程:在我的案例中使用一些相关性生成距离矩阵 pearson。

library(RColorBrewer);
library(gplots);
args <- commandArgs(TRUE);
matrix_a <- read.table(args[1], sep='\t', header=T, row.names=1);
mtscaled <- as.matrix(scale(matrix_a))
pdf("result.pdf", pointsize = 15, width = 18, height = 18)
result <- heatmap.2(mtscaled, Colv=T,Rowv=T, scale='none',symm = T, col = brewer.pal(9,"Reds"))
dev.off() 

通过执行以下操作,我可以使用正常的热图功能完成此操作:

result <- heatmap(mtscaled, Colv=T,Rowv=T, scale='none',symm = T)

但是,当我对 Heatmap.2 使用相同的设置时,集群在对角线上也不会对齐。我附上了两张图片,第一张图片使用热图,第二张图片使用热图.2。我使用了 RColorBrewer 包中的红色来帮助更好地展示我正在做的事情。我通常只使用默认的热图功能,但我需要 heatmap.2 提供的颜色变化。

这是用于生成热图的数据集列表,在它被转换为距离矩阵后: DataSet

从热图绘制的热图

从 Heatmap.2 绘制的热图

4

1 回答 1

5

好像两个论点是相互矛盾的。Colv=T表示按簇对列进行排序,并symm=T表示将列排序与行相同。当然,由于数据是对称的,因此这两个约束都可以得到满足,但取而代之的是,Colv=T你会得到两个恰好不同的独立集群排序。

如果您放弃树状图的冗余副本,以下给出您想要的热图,至少:

result <- heatmap.2(mtscaled, Rowv=T, scale='none', dendrogram="row", symm = T, col = brewer.pal(9,"Reds"))

对称热图

于 2012-09-26T00:45:48.693 回答