如何在pheatmap标题中用plotmath添加带上下标的多行内容?
解决pheatmap多行带上下标的标题问题
方法1:使用plotmath的atop()函数(推荐)
atop()是R的plotmath语法中用于上下排列内容的函数,能直接在expression中实现多行标题,同时保留上标格式:
library(pheatmap) # 构造示例矩阵 mat <- matrix(rnorm(25), nrow = 5) # 生成带多行标题的热图 pheatmap(mat, main = expression(atop(ABC^'+/-', "第二行标题内容")))
- 第一部分
ABC^'+/-'实现带上下标的标题行 - 第二部分是普通文本的第二行标题,两者通过
atop()自动上下对齐
方法2:手动用grid包添加标题(灵活控制格式)
如果需要自定义每一行的字体大小、位置,可先绘制无标题的热图,再用grid工具手动添加标题:
library(pheatmap) library(grid) mat <- matrix(rnorm(25), nrow = 5) # 绘制无标题热图 p <- pheatmap(mat, main = "") # 添加第一行带上下标的标题(y参数控制垂直位置) grid.text(expression(ABC^'+/-'), y = unit(0.95, "npc"), gp = gpar(fontsize = 14)) # 添加第二行标题 grid.text("第二行自定义标题", y = unit(0.91, "npc"), gp = gpar(fontsize = 12))
为什么paste无法生效?
paste()会将表达式转为普通字符串,而pheatmap的main参数如果传入字符串,无法解析plotmath的上标语法。必须直接传入plotmath表达式(如expression()包裹的内容),atop()是plotmath原生支持的多行排版函数,能保留格式解析能力。
内容的提问来源于stack exchange,提问作者Charité Learner
相关产品推荐
相关产品推荐

