You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 15:55:00