森林图,不仅存在于Meta分析中,还可以用于论文中的亚组分析,在此以JAMA Internal Medicine一篇文章中的亚组分析森林图为例,手把手教你用R软件快速出亚组分析中的森林图。
(一)前期准备
1、将森林图中文字的部分在Excel中整理出来。
2、按照你想要展示的格式调整表格的格式,尽量让图表变得好看一些,同时将OR值和可信区间的上限和下限单独整理出来。
关于整理OR值和可信区间的上限和下限,这里有一个小技巧,可以利用Excel数据栏中的功能快速完成。
先将OR(95%CI)这一列的数据复制在新的一列(注意:标题就直接舍弃了),然后选中点击你复制的数据,点击数据栏中的“分列”,按照分隔符号将数据分隔成3列,刚好分别就是OR值、可信区间内的上限、可信区间的下限。步骤如下:
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),接下来就是画森林图了:
画出来的森林图如下:
(三)主要参数介绍
> 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则是两端小竖线的高度;
xticks=(c(0.05,0.1,1.0,1.5))是坐标抽的刻度;
clip=c(0.05,1.5)是设置显示图形的大小,比如,这里设置了取坐标轴的0.05-1.5之间,那么超过的误差线会显示成一个箭头,表示超过这个范围,但未显示;
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 误差线的线形,不同数字代表不同线形;
txt_gp=fpTxtGp(label = gpar(cex=0.8),ticks = gpar(cex=0.8)) 设置标题行的字号和坐标轴数据点的字号。
当然,这么多的参数不需要你一一设置,R软件中会有默认值的。