在前文中,我们介绍了基于R语言的亚组分析方法。为进一步展示分析结果,本文将使用森林图直观呈现各亚组的HR值及P值。与之前介绍的forestplot包不同,本次我们采用功能更为强大的forestploter包进行绘图。该包具有更高的灵活性,能够支持更复杂的图形定制需求。下面,我们将逐步演示如何使用forestploter包绘制森林图。
一、数据准备
将亚组分析结果整理为CSV格式文件,包含9列,分别为变量名、HR值、P值、交互作用的P值、置信区间的下限和上限、样本量及百分比、以及完整格式化的HR(95%CI)字符串值。

二、森林图绘制步骤
1、安装并加载所需要的R包
install.packages("forestploter")
install.packages("grid")
library(forestploter)#森林图绘制包
library (grid)#图形系统基础包
2、设置工作目录与数据读取
设置R的工作目录到指定路径,后续的文件读取和保存默认在此路径下进行。
setwd("C:/Users/Lenovo/Desktop/forestploter")
3、读取数据
读取当前目录下的data.csv文件,存储到变量data中。check.names=F:禁止自动修改列名中的特殊字符(如空格转为点)。
data<-read.csv(file="data.csv",check.names=F)
data#打印数据框内容,检查数据是否加载正确

4、处理缺失值与添加空白列
将第3、4、7、8列中的缺失值(NA)替换为空字符串"",避免缺失值在绘图时显示为NA,保持图形整洁。
data[,c(3,4,7,8)][is.na(data[,c(3,4,7,8)])]<-""
新增一个名为" "(两个空格)的列。为森林图留出空白间隔区域,通过调整空格数量控制图形宽度。
data$' '<-paste(rep(" ",nrow(data)),collapse = " ")
#再次打印数据,检查处理后的结果。
data

5、森林图绘制
5.1 设置图形主题
tm<-forest_theme(base_size = 12,#基础字体大小
ci_lyt=1,# 置信区间样式(1=直线两端带短横线)
ci_lwd = 1.5,#置信区间线宽
ci_Theight=0.2,#置信区间端部高度
refline_lwd=1.5,#参考线线宽
refline_lty="dashed",#参考线类型
refline_col="grey20",#参考线颜色
footnote_cex=0.8,# 脚注字体缩放(基准字号的80%)
footnote_fontface="italic",# 脚注字体样式(斜体)
footnote_col="gray30",#脚注颜色
core=list(bg_params=list(
fill=c("#FFFFFF","#f5f7f6"),#交替行背景色(白和浅灰)
col=NA# 边框颜色(NA表示无边框)
))
)
5.2 绘制森林图
p<-forest(
data=data[,c(1,7,8,10,9,3,4)],#选择显示的列及顺序
lower=data$conf.low, #置信区间下限
upper = data$conf.high, #置信区间上限
est = data$estimate, #效应量估计值(如HR)
ci_column = 4,#指定置信区间(图形)在第4列显示
sizes = (data$estimate+0.001)*0.5,#调整效应量点的大小,+0.001避免HR=0时点消失
ref_line = 1,#在HR=1处绘制参考线(无效线)
xlim = c(0,4),#X轴范围
arrow_lab = c("Exercise better","Non-exercise better"),#箭头标签
theme = tm #应用自定义主题
)
print(p)
