森林图,不仅存在于Meta分析中,还可以用于论文中的亚组分析,在此以JAMA Internal Medicine一篇文章中的亚组分析森林图为例,手把手教你用R软件快速出亚组分析中的森林图。

  (一)前期准备

Meta分析

  1、将森林图中文字的部分在Excel中整理出来。

Meta分析

  2、按照你想要展示的格式调整表格的格式,尽量让图表变得好看一些,同时将OR值和可信区间的上限和下限单独整理出来。

Meta分析

  关于整理OR值和可信区间的上限和下限,这里有一个小技巧,可以利用Excel数据栏中的功能快速完成。

  先将OR(95%CI)这一列的数据复制在新的一列(注意:标题就直接舍弃了),然后选中点击你复制的数据,点击数据栏中的“分列”,按照分隔符号将数据分隔成3列,刚好分别就是OR值、可信区间内的上限、可信区间的下限。步骤如下:

Meta分析

Meta分析

Meta分析

  3、后将表格保存为“csv”格式(excel格式导入R后可能会出现乱码),前期准备工作就完成了。

  (二)作图

  1、下载R软件,R软件是一款免费软件,可于官网下载。

  (https://mirrors.tuna.tsinghua.edu.cn/CRAN/)

  2、打开R软件后,点击任务栏中的“文件”“改变工作目录”,然后选择文件夹,就可直接读取该文件夹中的文件以及默认保存信息在该文件夹中,省略了输入路径的过程。

  3、导入forestplot包

  >library(forestplot) ##如果是第一次使用,需要先下载包install.packages("forestplot")

  然后读取数据

  > dat=read.csv("forest.csv", header=F) ##因为前面已经更改了工作目录,所以不需要输入路径,没有设置的需要加上读取路径,比如(“C:/Users/ forest.csv”)。header=F则默认读取的数据集没有变量名,接下来要看看读取数据集默认的变量名:> names(dat),接下来就是画森林图了:

Meta分析

  画出来的森林图如下:

Meta分析森林图

  (三)主要参数介绍

  > tiff("forest.tiff", width = 10000, height = 10000, res = 800, compression = "lzw")##这个是将森林图保存为“TIFF”格式,“forest.tiff”是保存的文件名,width和height是图的大小,res是分辨率,compression是压缩格式,“lzw”是一种无损压缩格式。

> forestplot(as.matrix(dat[,1:6]), dat$V7, dat$V8, dat$V9, zero=1,graph.pos=6,

+ graphwidth=unit(50,"mm"), lineheight=unit(4,"mm"), colgap = unit(10,"mm"),

+ boxsize=0.5, is.summary = c(TRUE,TRUE,rep(FALSE,50)), ci.vertices = TRUE,

+ xticks=(c(0.05,0.1,1.0,1.5)), clip=c(0.05,1.5), lwd.ci =2,

+ col= fpColors(lines = "darkgreen",box="darkgreen",zero = "black"))

  ## forestplot()是画森林图的函数,括号里面是对森林图的一些调整,主要的参数是以下6个参数

  as.matrix(dat[,1:6])是指你要将数据集的前6列作为森林图的文本内容,

       dat$V7是OR值,也可以是均值、中位数,

       dat$V8是可信区间的上限,

       dat$V9是可信区间的下限,

       zero=1是指参考值,也就是森林图中的竖线,因为这里是OR值,所以设置“1”为参考值

  graph.pos=6是指误差图的具体位置,这里是指将图放在第6列。

  接下来的参数是对图形的调整,使图片更美观:

       graphwidth是指误差图的宽度;

       lineheight是图形的行距,一般可以设置为“auto”;

       colgap是指每一列之间的间距;boxsize是指误差条中心方块的大小;

       is.summary用于定义每一行数据是否汇总值,是的话便会加粗,也就是说,你想要加粗的哪一行是设为“TRUE”,这里因为Enalapril和 Events No.,%分为了两行,所以设置前两行为“TRUE”,加粗;

       ci.vertices是设置误差条两端是否有小竖线;

  ci.vertices.height=0.15则是两端小竖线的高度;

Meta分析森林图

  xticks=(c(0.05,0.1,1.0,1.5))是坐标抽的刻度;

  clip=c(0.05,1.5)是设置显示图形的大小,比如,这里设置了取坐标轴的0.05-1.5之间,那么超过的误差线会显示成一个箭头,表示超过这个范围,但未显示;

Meta分析森林图

  lwd.ci=2是误差线的粗细;

  col= fpColors(lines = "darkgreen",box="darkgreen",zero = "black")是误差图的颜色,lines是线的颜色,box是误差线中心方形的颜色,zero是竖线的颜色。

  其他参数

       xlab=“”是坐标轴的标题;

       lwd.zero = 2是设置参考线的粗细;

       lwd.xaxis=2是设置X轴线的粗细;fn.ci_norm = fpDrawCircleCI 估计值(误差线中心)的形状设置为圆形,fpDrawNormalCI为方格;

  lty.ci = 1 误差线的线形,不同数字代表不同线形;

Meta分析森林图

  txt_gp=fpTxtGp(label = gpar(cex=0.8),ticks = gpar(cex=0.8)) 设置标题行的字号和坐标轴数据点的字号。

  当然,这么多的参数不需要你一一设置,R软件中会有默认值的。