如何在gplots heatmap.2中设置轴标签大小?

时间:2017-02-15 13:44:53

标签: r heatmap gplots

我找不到为热图本身设置轴标签大小的方法。传递给cex.lab的{​​{1}}参数无效。调用heatmap.2会对图例轴标签和标题产生影响(这些都在一起,如果只想更改标题,我无法想象...)。无论如何,我的问题是热图轴标签尺寸。示例代码:

par(cex.lab = 2.5)

1 个答案:

答案 0 :(得分:4)

检查heatmap.2代码是不可能的。 heatmap.2调用image来绘制热图,并将额外的关键字args(...)传递给它,因此调用heatmap.2(..., cex.lab = n, ...)会成功,而image会考虑{ {1}},这样也是可能的。但是这里parxlab被替换为空字符串,并且标签和轴标签都会在以后绘制:

ylab

然后要绘制轴标签,它使用# 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) ,这避免了在合理范围内与ticklabels重叠,但maye应该将另一个参数添加到函数中,以便用户可以修改它是否适合。< / p>

您可以将cex.lab / 5heatmap.2.R source复制到您的工作目录中,修改并获取它:

gplots

但是你需要在开头添加这些行:

source('heatmap.2.R')