欢迎关注”生信修炼手册”!

在之前meta分析的文章中我们介绍了森林图的画法,典型的森林图如下所示

每一行表示一个study,用errorbar展示log odds ratio值的分布,并将p值和m值标记在图中。森林图主要用于多个study的分析结果的汇总展示。

在构建预后模型时,通常会先对所有基因进行单变量cox回归,然后筛选其中显著的基因进行多变量cox回归来建模,对于cox回归的结果,每个基因也都会有一hazard ratio和对应的p值,也可以用森林图的形式来展现,比如NAD+的文献中就采用了这样的一张森林图

每一行表示一个变量,用errorbar展示该变量对应的风险值的大小和置信区间,并将风险值和p值标记在图上。

根据cox生存分析的结果绘制森林图有多种方式,使用survminer包的ggforest函数,是最简便的一种,代码如下

> library(survminer)
> require("survival")
> model <- coxph( Surv(time, status) ~ sex + rx + adhere,
+                 data = colon )
> model
Call:
coxph(formula = Surv(time, status) ~ sex + rx + adhere, data = colon)coef exp(coef) se(coef)      z        p
sex       -0.04615   0.95490  0.06609 -0.698 0.484994
rxLev     -0.02724   0.97313  0.07690 -0.354 0.723211
rxLev+5FU -0.43723   0.64582  0.08395 -5.208 1.91e-07
adhere     0.29355   1.34118  0.08696  3.376 0.000736Likelihood ratio test=46.51  on 4 df, p=1.925e-09
n= 1858, number of events= 920
> ggforest(model)

效果图如下

这种方式确实出图简单,一步到位,但是提供的参数却很少,灵活性很小,基本上没法修改图中的元素,另外一种方式,就是使用forest这个R包,这个R包灵活性很大,通过调参可以实现很多自定义效果,基本用法如下

> row_names <- list(list("test = 1", expression(test >= 2)))
> test_data <- data.frame(
+   coef = c(1.59, 1.24),
+   low = c(1.4, 0.78),
+   high = c(1.8, 1.55)
+ )
> forestplot(
+   labeltext = row_names,
+   mean = test_data$coef,
+   lower = test_data$low,
+   upper = test_data$high,
+   zero = 1,
+   cex  = 2,
+   lineheight = "auto",
+   xlab = "Lab axis txt"
+ )

效果图如下

虽然输出很简陋大,但是从基本用法可以看出,我们可以自定义变量名称,指定风险值的大小,这样我们只需要从cox回归的结果中提取我们需要绘图的元素进行绘制即可。

基本用法之外中添加的变量是单列注释,如果要实现文献中图片的多列注释效果,可以参考下面这个例子

> test_data <- data.frame(
+   coef1 = c(1, 1.59, 1.3, 1.24),
+   coef2 = c(1, 1.7, 1.4, 1.04),
+   low1 = c(1, 1.3, 1.1, 0.99),
+   low2 = c(1, 1.6, 1.2, 0.7),
+   high1 = c(1, 1.94, 1.6, 1.55),
+   high2 = c(1, 1.8, 1.55, 1.33)
+ )
>
> col_no <- grep("coef", colnames(test_data))
> row_names <- list(
+   list("Category 1", "Category 2", "Category 3", expression(Category >= 4)),
+   list(
+     "ref",
+     substitute(
+       expression(bar(x) == val),
+       list(val = round(rowMeans(test_data[2, col_no]), 2))
+     ),
+     substitute(
+       expression(bar(x) == val),
+       list(val = round(rowMeans(test_data[3, col_no]), 2))
+     ),
+     substitute(
+       expression(bar(x) == val),
+       list(val = round(rowMeans(test_data[4, col_no]), 2))
+     )
+   )
+ )
>
> coef <- with(test_data, cbind(coef1, coef2))
> low <- with(test_data, cbind(low1, low2))
> high <- with(test_data, cbind(high1, high2))
> forestplot(row_names, coef, low, high,
+   title = "Cool study",
+   zero = c(0.98, 1.02),
+   grid = structure(c(2^-.5, 2^.5),
+     gp = gpar(col = "steelblue", lty = 2)
+   ),
+   boxsize = 0.25,
+   col = fpColors(
+     box = c("royalblue", "gold"),
+     line = c("darkblue", "orange"),
+     summary = c("darkblue", "red")
+   ),
+   xlab = "The estimates",
+   new_page = TRUE,
+   legend = c("Treatment", "Placebo"),
+   legend_args = fpLegend(
+     pos = list("topright"),
+     title = "Group",
+     r = unit(.1, "snpc"),
+     gp = gpar(col = "#CCCCCC", lwd = 1.5)
+   )
+ )

效果图如下

基于上述知识储备和函数的帮助文档,我们就可以实现和文章中图片一致的效果图了,只需要仔细钻研函数的帮助文档即可。

·end·

—如果喜欢,快分享给你的朋友们吧—

原创不易,欢迎收藏,点赞,转发!生信知识浩瀚如海,在生信学习的道路上,让我们一起并肩作战!

本公众号深耕耘生信领域多年,具有丰富的数据分析经验,致力于提供真正有价值的数据分析服务,擅长个性化分析,欢迎有需要的老师和同学前来咨询。

更多精彩

  • KEGG数据库,除了pathway你还知道哪些

  • 全网最完整的circos中文教程

  • DNA甲基化数据分析专题

  • 突变检测数据分析专题

  • mRNA数据分析专题

  • lncRNA数据分析专题

  • circRNA数据分析专题

  • miRNA数据分析专题

  • 单细胞转录组数据分析专题

  • chip_seq数据分析专题

  • Hi-C数据分析专题

  • HLA数据分析专题

  • TCGA肿瘤数据分析专题

  • 基因组组装数据分析专题

  • CNV数据分析专题

  • GWAS数据分析专题

  • 机器学习专题

  • 2018年推文合集

  • 2019年推文合集

  • 2020推文合集

写在最后

转发本文至朋友圈,后台私信截图即可加入生信交流群,和小伙伴一起学习交流。

扫描下方二维码,关注我们,解锁更多精彩内容!

一个只分享干货的

生信公众号

绘制cox生存分析结果的森林图相关推荐

  1. R语言使用cox函数构建生存分析回归模型、使用subgroupAnalysis进行亚组分析并可视化森林图

    R语言使用cox函数构建生存分析回归模型.使用subgroupAnalysis进行亚组分析并可视化森林图 目录

  2. 使用R语言ggplot2包绘制pathway富集分析气泡图(Bubble图):数据结构及代码

    气泡图是在笛卡尔坐标系同加入大小的参数所形成的可以表示三个变量关系的图例.在对基因完成GO/KEGG分析后,使用气泡图可以直观的展示pathway.pvalue.count之间的关系.下面为使用R语言 ...

  3. R语言使用glm函数构建逻辑回归模型(logistic)、使用subgroupAnalysis函数进行亚组分析并可视化森林图

    R语言使用glm函数构建逻辑回归模型(logistic).使用subgroupAnalysis函数进行亚组分析并可视化森林图 目录

  4. Nomogram(诺莫图) | Logistic、Cox生存分析结果可视化

    本文首发于"生信补给站"公众号,https://mp.weixin.qq.com/s/BWpy3F-nEKXCdVXmY3GYZg 当然还有更多R语言,生物信息学相关知识...? ...

  5. 利用forestplot包绘制效应量亚组分析的类森林图

    在临床研究中,为了验证主要结论在不同特征人群中的一致性,常需要在完成主效应分析后,再进行亚组分析,如发表在<Cardiovascular Diabetology>杂志上的一篇论文[1], ...

  6. R-forestplot包| HR结果绘制森林图

    本文首发于"生信补给站"微信公众号,https://mp.weixin.qq.com/s/2W1W-8JKTM4S4nml3VF51w 更多关于R语言,ggplot2绘图,生信分析 ...

  7. python画树林_R-forestplot包| HR结果绘制森林图

    本文首发于"生信补给站"微信公众号,https://mp.weixin.qq.com/s/2W1W-8JKTM4S4nml3VF51w 更多关于R语言,ggplot2绘图,生信分析 ...

  8. 关于风险回归的Cox 模型构建,森林图(1)

    主要参考的连接是 Forest plot(森林图) | Cox生存分析可视化 https://zhuanlan.zhihu.com/p/85675323 R语言:多因素Cox回归森林图 (基于fore ...

  9. 森林图怎么分析_森林图(forest plot)怎么看|meta分析

    Hello, 大家好,我是钟多少玲这是本公众号的第15篇更文第一次拖更,感谢大家后台(当面)催稿先碎碎念几句--十月是繁忙又收获的季节,很幸运期间收到4篇文章accepted的消息,人生中第一.第二篇 ...

最新文章

  1. P2280 [HNOI2003]激光炸弹(二维前缀和的简单应用)难度⭐⭐⭐
  2. 沈向洋:从深度学习到深度理解
  3. Spring Boot中使用Swagger2构建RESTful APIs
  4. 鸟哥的Linux私房菜(基础篇)-第五章、首次登陆与在线求助 man page
  5. 数据增强:数据有限时如何使用深度学习 ?
  6. sql2005备份还原详解
  7. PC寄存器为什么会被设定为线程私有
  8. 你的代码可以是优雅的,但是还有更重要的
  9. 软件工程第一次作业2018
  10. 红魔游戏手机6 Pro氘锋透明版明日开启预售:售价5599元
  11. Jira项目导入,被导入项目与目的系统数据类型不一致导入不成功的解决方案
  12. 超准!生活中48条让人匪夷所思的诡秘心理...
  13. css判断手机端还是pc端,JavaScript判断设备是手机端还是PC端,并加载不同的css/js文件...
  14. 远程桌面同步本地计算机,微软更新远程桌面应用现在终于可以在本地和远程计算机上复制文件...
  15. 【LeetCode】马三来刷题之Permutations
  16. 滴滴运营A/Btest城市运营分析
  17. 一篇文章带你搞懂 JPA 和 hibernate
  18. 电脑安装哪款linux系统好,四款linux操作系统总有一款适合你
  19. Istio系列学习(十四)----Istio策略适配器配置和Env适配器配置
  20. 跨境电商RPA是什么意思?用PRA工具能做啥?

热门文章

  1. Python爬虫项目分享二:《爬取周杰伦的歌曲评论》
  2. [转载]创业者的N种死法
  3. 阿龙学堂-中缀-后缀表达式的计算
  4. Day8--复数和复变函数之拉普拉斯变换及反变换和Z变换及反变换
  5. 直线检测论文(霍夫变换,LSD,DWP,L-CNN,AFM,HAWP,PPGNet,TP-LSD,M-LSD,LETR)
  6. Notification 完整版整合
  7. [世界概览]那些被印度人毁掉或者差一点毁掉的公司(翻译)
  8. 《破解数字VLSI验证面试》翻译计划——第一章
  9. 《云》赏析-[唐]来鹄古诗
  10. torch.squeeze用法