R语言画Cox回归森林图

##### cox多因素回归森林图#######
#install.packages("tableone")
library(tableone)
library(survival)
##画森林图的包
library(forestplot)

mul_cox<-coxph(Surv(time, status) ~ ., data = lung)

mul_cox1 <- summary(mul_cox)
colnames(mul_cox1$conf.int)
#mul_cox1$coefficients
##提取HR+95%CI
multi1<-as.data.frame(round(mul_cox1$conf.int[, c(1, 3, 4)], 2))
##提取:HR(95%CI)和P
# ShowRegTable {tableone}
multi2<-ShowRegTable(mul_cox, 
                     exp=TRUE, 
                     digits=2, 
                     pDigits =3,
                     printToggle = TRUE, 
                     quote=FALSE, 
                     ciFun=confint)
##将两次提取结果合并成表
result <-cbind(multi1,multi2)
##行名转为表格第一列,并给予命名"Characteristics"
result<-tibble::rownames_to_column(result, var = "Characteristics")

## 加上表头信息
result<- rbind(c("Characteristics", NA, NA, NA, "HR(95%CI)","p"),result)
## 画森林图
forestplot(result[,c(1,5,6)], #告诉函数,合成的表格result的第1,5,6列还是显示数字
           mean=result[,2],   #告诉函数,表格第2列为HR,它要变成森林图的小方块
           lower=result[,3],  #告诉函数表格第3列为5%CI,
           upper=result[,4],  #表格第5列为95%CI,它俩要化作线段,穿过方块
           zero=1,            #告诉函数,零线或参考线为HR=1即x轴的垂直线
           boxsize=0.2,       #设置小黑块的大小
           #graph.pos=2,       #森林图应插在图形第2列
           graph.pos="right",       #森林图应插在图形最右边
           hrzl_lines=list("1" = gpar(lty=1,lwd=2),
                           "2" = gpar(lty=2),
                           "10"= gpar(lwd=2,lty=1,columns=c(1:3)) ), # 加上横线
           graphwidth = unit(.25,"npc"), # 图的宽度
           xticks=c(0.5,1,2,3,4,5), # 横轴上数字
           is.summary=c(F,F,F,T,T,F,F,F,F), # 突出有统计差异的行(变量)
           txt_gp=fpTxtGp(
             label=gpar(cex=1),
             ticks=gpar(cex=0.8), 
             xlab=gpar(cex=1), 
             title=gpar(cex=1.5)), # 调整文字部分字体
           lwd.zero=1,  # 参考线宽度
           xlab="Hazard ratio", # 横轴标签
           lwd.xaxis = 3, #横轴线宽
           title="Cox regression forest map", 
           col=fpColors(box ='black', 
                        lines ='blue', 
                        zero = "black"),  # 设置颜色
           fontsize = 16,
           lwd.ci=3, # 置信区间横线宽度
           lty.ci=2, # 置信区间横线类型
           ci.vertices =T,
           ci.vertices.height=0.2,
           clip=c(0.1,8),
           ineheight=unit(8, 'mm'),
           line.margin=unit(8, 'mm'),
           colgap=unit(6, 'mm')
           )

你可能感兴趣的:(r语言,回归,开发语言)