如何在metafor森林图的模型标签中换行显示统计量
解决metafor森林图模型标签多行缩进问题
直接修改mlabfun函数,通过换行符\n+空格缩进实现三行显示,同时调整森林图的文本对齐参数即可。以下是完整示例:
代码实现
library(metafor) # 加载示例数据并拟合模型 dat <- dat.bcg res <- rma(ai=tpos, bi=tneg, ci=cpos, di=cneg, data=dat, measure="RR", slab=paste(author, year, sep=", ")) # 自定义mlabfun函数:生成带缩进的多行统计量标签 mlabfun <- function(text, x) { # 构造每行统计量,前面加4个空格实现缩进 q_line <- paste0(" Q-test = ", round(x$QE, 2), ", df = ", x$k - x$p, ", p = ", round(x$pval, 3)) i2_line <- paste0(" I² = ", round(x$I2, 1), "%") tau2_line <- paste0(" τ² = ", round(x$tau2, 3)) # 组合主标题与三行统计量,用换行符分隔 paste(text, "\n", q_line, "\n", i2_line, "\n", tau2_line, sep="") } # 绘制森林图,设置mlab.pos=4使标签右对齐,强化缩进效果 forest(res, mlab=mlabfun, mlab.pos=4)
关键说明
- 为什么
atop()无效?atop()属于plotmath语法,而forest()的mlab参数默认输出普通文本,不会解析plotmath表达式,因此会直接显示为字符串而非多行格式。 - 缩进与对齐的调整:
- 用4个空格(可自行增减)实现每行缩进;
mlab.pos=4设置模型标签整体右对齐,让缩进的统计量行相对于主标题更明显;若偏好左对齐,可改为mlab.pos=1,此时缩进为左侧留空。
内容的提问来源于stack exchange,提问作者Dimitrios
相关产品推荐
相关产品推荐

