森林图在论文中很常见,多用于表示多因素分析中的变量与结果变量的比值效应,可以用图示的方法比较直观的绘制出来。既往我们在文章《R语言快速绘制多因素回归分析森林图(1)》《R语言使用forestploter包绘制单组及双组森林图(2)(附有超详细备注)》已经介绍了怎么绘制森林图,今天继续介绍forestplot包绘制森林图,forestplot包的特点是简单易上手,不容易出错。
下面我们进入正题,先导入数据和R包
library(forestplot)
dt<-read.csv("E:/r/test/forest2.csv",sep=',',header=TRUE)
这是一个森林图数据(公众号回复:森林图数据2,可以获得数据)这个数据,
前几个变量我解释一下Subgroup:分组,就是的组别和亚组,Treatment:治疗组例数,Placebo:使用安慰剂,也就是对照组的例数。Est:效应值,可以是OR或者HR,low:效应值的最低值,可以认为是可信区间的下限,hi:效应值的最高值,可以认为是可信区间的上限。
我们先来画一个最基础的森林图,后面的几个数据暂时不需要,我们先精简一下数据
dt <- dt[,1:6]
View(dt)
假设我们想把1—3列数据进行绘制森林图,得到数据后不能直接绘图,要把数据预处理一下,变成需要的绘图的矩阵格式,这里介绍2种方法。
第一种方法:
tabletext1<- cbind(c("Subgroup","\n",dt$Subgroup),
c("Treatment","\n",dt$Treatment),
c("Placebo","\n",dt$Placebo),
c("est","\n",dt$est),
c("low","\n",dt$low),
c("hi","\n",dt$hi))
这样就生成一个绘图的矩阵了,但这里要注意一下,第二行是空的,什么都没有,要把第二行删除掉,不然会报错。
tabletext1<-tabletext1[-2,]
删除掉后表格紧凑了一点,就可以直接绘图了,这里要注意一下,mean,lower,upper要的是dt,也就是原数据。graph.pos就是图片位置,你想选第几行绘图就填几,我这里填最右边
forestplot(labeltext=tabletext1[,1:3],graph.pos="right",
mean=c(NA,dt$est),
lower=c(NA,dt$low),
upper=c(NA,dt$hi),
graphwidth = unit(60,"mm"),#设置图片位置和宽度
boxsize =0.2,line.margin = unit(5,"mm"),#对散点和线条进行设置
lineheight = unit(5,"mm"),#设置图形行距
col=fpColors(box = "grey0",lines = "grey0",summary = "grey0"),
colgap = unit(1,"mm"),#图形列间距
zero = 1,#参照值
xticks = c(0,1,2))#X轴的定义标签
这样一个简单美观的森林图就绘制好了,下面介绍第二种方法,直接选行数生成矩阵,我觉得这样简单一点
dt1<-as.matrix(dt[,1:3])
但这个格式没有第一列,我们还要需要加一下
dt1 <- rbind(c(NA, "Treatment","Placebo"),dt1)
加上去以后就可以绘图了,基本和第一种方法一样
forestplot(labeltext=dt1,graph.pos="right",
mean=c(NA,dt$est),
lower=c(NA,dt$low),
upper=c(NA,dt$hi),
graphwidth = unit(60,"mm"),#设置图片位置和宽度
boxsize =0.2,line.margin = unit(5,"mm"),#对散点和线条进行设置
lineheight = unit(5,"mm"),#设置图形行距
col=fpColors(box = "grey0",lines = "grey0",summary = "grey0"),
colgap = unit(1,"mm"),#图形列间距
zero = 1,#参照值
xticks = c(0,1,2))#X轴的定义标签
我们还可以对图片的一些细节进行修改,修改图片位置
forestplot(labeltext=dt1,graph.pos=2,
mean=c(NA,dt$est),
lower=c(NA,dt$low),
upper=c(NA,dt$hi),
graphwidth = unit(60,"mm"),#设置图片位置和宽度
boxsize =0.2,line.margin = unit(5,"mm"),#对散点和线条进行设置
lineheight = unit(5,"mm"),#设置图形行距
col=fpColors(box = "grey0",lines = "grey0",summary = "grey0"),
colgap = unit(1,"mm"),#图形列间距
zero = 1,#参照值
xticks = c(0,1,2))#X轴的定义标签
更改图片宽度
forestplot(labeltext=dt1,graph.pos=2,
mean=c(NA,dt$est),
lower=c(NA,dt$low),
upper=c(NA,dt$hi),
graphwidth = unit(40,"mm"),#设置图片位置和宽度
boxsize =0.2,line.margin = unit(5,"mm"),#对散点和线条进行设置
lineheight = unit(5,"mm"),#设置图形行距
col=fpColors(box = "grey0",lines = "grey0",summary = "grey0"),
colgap = unit(1,"mm"),#图形列间距
zero = 1,#参照值
xticks = c(0,1,2))#X轴的定义标签
更改线条和方块颜色
forestplot(labeltext=dt1,graph.pos=2,
mean=c(NA,dt$est),
lower=c(NA,dt$low),
upper=c(NA,dt$hi),
graphwidth = unit(40,"mm"),#设置图片位置和宽度
boxsize =0.2,line.margin = unit(5,"mm"),#对散点和线条进行设置
lineheight = unit(5,"mm"),#设置图形行距
col=fpColors(box = "blue",lines = "red",summary = "grey0"),
colgap = unit(1,"mm"),#图形列间距
zero = 1,#参照值
xticks = c(0,1,2))#X轴的定义标签
为X轴添加标签文章来源:https://www.toymoban.com/news/detail-418303.html
forestplot(labeltext=dt1,graph.pos=2,
mean=c(NA,dt$est),
lower=c(NA,dt$low),
upper=c(NA,dt$hi),
graphwidth = unit(40,"mm"),#设置图片位置和宽度
boxsize =0.2,line.margin = unit(5,"mm"),#对散点和线条进行设置
lineheight = unit(5,"mm"),#设置图形行距
col=fpColors(box = "blue",lines = "red",summary = "grey0"),
colgap = unit(1,"mm"),#图形列间距
zero = 1,#参照值
xlab="X轴的标签",
xticks = c(-1,0,1))#X轴的定义
还有许多调整,我这里就不弄了,大家自己摸索把。文章来源地址https://www.toymoban.com/news/detail-418303.html
到了这里,关于R语言forestplot包绘制森林图的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!