R-Heatmap.2 禁用列树状图后,去除标题和实际热图之间留下的巨大空白空间

6

我正在使用heatmap.2()绘制一个759*12的双精度矩阵twoway.expr.005

library(gplots)
dist2 <- function(x, ...){as.dist(1-cor(t(x), method="pearson"))}
heatmap.2(x=twoway.expr.005,col=bluered(75), main="Heatmap:759 genes\nTwosided Pval<0.05",tracecol= NULL, cexCol=0.8,cexRow=0.5,labCol=labs,distfun=dist2,scale="row",key=F,dendrogram='row',Colv=F)

但是因为我设置了dendrogram='row'(关闭了列树状图)和key=F,当我尝试将热力图保存为PDF文件时,我的热力图在标题和实际绘图之间留下了巨大的空白。

enter image description here

我尝试按建议设置lhei。我已经使用了lhei=c(1,4),但仍然在标题和绘图之间显示了很多空间:

heatmap.2(x=twoway.expr.005,col=bluered(75), main="Heatmap:759 genes\nTwosided Pval<0.05",tracecol= NULL, cexCol=0.8,cexRow=0.5,labCol=labs,distfun=dist2,scale="row",key=F,dendrogram='row',Colv=F,lhei=c(1,4))

在此输入图片描述

将lhei=c(1,5)设置会完全忽略标题:

heatmap.2(x=twoway.expr.005,col=bluered(75), main="Heatmap:759 genes\nTwosided Pval<0.05",tracecol= NULL, cexCol=0.8,cexRow=0.5,labCol=labs,distfun=dist2,scale="row",key=F,dendrogram='row',Colv=F,lhei=c(1,5))

图片描述输入在此处

我认为Heatmap.2是以这样一种方式设计的,即标题总是放置在列树状图上方。因此,如果禁用列树状图,则会留下空白空间,但标题位置仍在“禁用”列树状图上方。有没有办法修改代码,使标题不放置在列树状图上方(这可能是解决此问题的方法)?还有什么其他方法可以消除标题和实际绘图之间的空间?


解决这个问题有什么进展吗?我遇到了同样的问题,hlei和其他部分会截断标题或者报错说"图像区域太小"。 - Anton Tarasenko
不行,我没能解决它。我已经多次阅读了heatmap.2手册,但没有找到任何与这个问题相关的内容。我猜这是一个需要修复的bug。 - Komal Rathi
2个回答

4
heatmap.2中的lhei参数可以用来解决这个问题。它需要一个长度为2的向量,表示绘图布局中行的相对高度。
heatmap.2使用layout函数将绘图区域分成四个块。基本上,您需要控制第一个块相对于第二个块的高度。为此,将lhei设置为类似于c(1,10)的值。这将使底部行(即热图所在的行)比通常具有行的树状图和颜色键的顶部行高10倍。 layout的文档提供了更多详细信息。

老实说,在这里设置“lhei”并不起作用。 我尝试设置了“lhei(1,n)”,其中n从1到10变化。 当n <4时,标题和实际图之间会留下很多空间,而当n> 4时,它会完全忽略标题以及X轴标签。 简而言之,我再也看不到X轴标签和标题了。 - Komal Rathi

1
你可以使用标题代替在heatmap.2内部设置主标题。 title("你的标题", line= -2)
你可以通过改变line的值来调整距离。 没有帮助左右居中,如果没有两个树状图仍然偏离,但是你会更接近。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接