检查heatmap.2
代码这是不可能的设计。 heatmap.2
调用image
来绘制热图,并将额外的关键字参数(...
)传递给它,因此调用heatmap.2(..., cex.lab = n, ...)
会使之成为,image
认为par
,所以也可以这样做。但在这里xlab
和ylab
被替换为空字符串,并且两个ticklabels和轴标签后面绘制:
# from gplots heatmap.2 source:
image(1:nc, 1:nr, x, xlim = 0.5+ c(0, nc), ylim = 0.5+ c(0, nr),
axes = FALSE, xlab = '', ylab = '', col=col, breaks=breaks,
...)
然后绘制它使用mtext
轴标签,这是不以par
参数敏感,但接受cex
的说法,这里没有提供:
# from gplots heatmap.2 source:
if(!is.null(xlab)) mtext(xlab, side = 1, line = margins[1] - 1.25)
if(!is.null(ylab)) mtext(ylab, side = 4, line = margins[2] - 1.25)
这意味着这些标签都是一样的大小,而热图是巨大的,有时,所以这可能是一个问题。也有人可能会缩小图形设备,所有其他文本元素有自定义的选项,然后轴标签的相对大小会更大。但我们如何能够以更灵活的方式进行分类?我修改这样的代码:
# gplots heatmap.2 code modified:
## add row and column headings (xlab, ylab)
cex.lab <- ifelse(invalid(match.call()$cex.lab), 1.0, match.call()$cex.lab)
if(!is.null(xlab)) mtext(xlab, side = 1,
line = margins[1] - 1.25 + cex.lab/5,
cex = cex.lab)
if(!is.null(ylab)) mtext(ylab, side = 4,
line = margins[2] - 1.25 + cex.lab/5,
cex = cex.lab)
唯一的问题是定位参数现在是cex.lab/5
,这避免了与在合理范围ticklabels重叠,但马爷另一个参数应该被添加到函数,因此用户可以修改如果它不适合。
您可以从gplots
source复制heatmap.2.R
到您的工作目录,修改和源是:
source('heatmap.2.R')
但是你也需要这些行添加到开始:
require(gtools)
plot.dendrogram = stats:::plot.dendrogram
'cexRow'和'cexCol'参数可能会有所帮助。你有没有调查过“热图”? – bouncyball
谢谢,'cexCol'和'cexRow'设置轴标签的大小,而不是轴标签。与'heatmap'运行结果相同:轴标签不受影响 – deeenes