如何在gridExtra表格中添加下标或上标?
解决gridExtra表格行名下标显示问题
直接给矩阵行名加HTML标签或expression是行不通的:矩阵行名只能是字符类型,tableGrob默认不解析HTML;直接赋值expression会被强制转成字符串,无法生效。以下是两种可行的解决方案:
方法一:创建tableGrob后修改行标签
library(gridExtra) library(grid) myData <- matrix(1:15, nrow=5, ncol=3) colnames(myData) <- c("Group A", "Group B", "Group C") rownames(myData) <- c("PM1", "b", "c", "d", "e") # 生成基础表格grob tg <- tableGrob(myData, theme = ttheme_minimal()) # 定位行头文本grob,替换第一行标签为plotmath表达式 row_head_grob <- tg$grobs[[which(tg$layout$name == "rowhead-fg")]] row_head_grob$label[1] <- expression(PM[1]) # 更新表格grob并绘制 tg$grobs[[which(tg$layout$name == "rowhead-fg")]] <- row_head_grob grid.arrange(tg)
方法二:创建tableGrob时直接指定带表达式的行标签
library(gridExtra) myData <- matrix(1:15, nrow=5, ncol=3) colnames(myData) <- c("Group A", "Group B", "Group C") # 用列表传递行标签,第一个元素为plotmath表达式 tg <- tableGrob(myData, theme = ttheme_minimal(), rows = list(expression(PM[1]), "b", "c", "d", "e")) grid.arrange(tg)
两种方法都利用grid绘图系统支持的plotmath语法渲染下标,PM[1]会被解析为PM的下标1。
内容的提问来源于stack exchange,提问作者lunae_majicam
相关产品推荐
相关产品推荐

