如何在r中使用heatmap.2让簇在对角线上排列?

Alo*_*los 10 r data-visualization cluster-analysis matrix

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

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() 
Run Code Online (Sandbox Code Playgroud)

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

result <- heatmap(mtscaled, Colv=T,Rowv=T, scale='none',symm = T)
Run Code Online (Sandbox Code Playgroud)

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

以下是用于生成热图的数据集的列表,在将其转换为距离矩阵后: DataSet

从热图中绘制的热图

热图来自Heatmap.2

xan*_*xan 5

就好像有两个参数是冲突的.Colv=T说要按群集排序列,并symm=T说要按行排序列.当然,由于数据是对称的,因此可以满足这两个约束,但是Colv=T获胜并且您获得两个独立的群集顺序,这些顺序恰好是不同的.

如果你放弃了树形图的冗余副本,下面给出了你想要的热图,至少:

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

对称热图

  • 嗨@Xan谢谢你我真的能用这个结果< - heatmap.2(mtscaled,dendrogram ="col",scale ='none',symm = T,col = bluered(16),breaks = my.我接受你的答案和+1因为它与我的不同:-) (3认同)