基于R语言的亚组分析与森林图绘制2

在前文中,我们介绍了基于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)