专栏首页生信修炼手册绘制cox生存分析结果的森林图

绘制cox生存分析结果的森林图

在之前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.000736


Likelihood 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·

文章分享自微信公众号:
生信修炼手册

本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!

作者:lzyg
原始发表时间:2022-05-30
如有侵权,请联系 cloudcommunity@tencent.com 删除。
登录 后参与评论
0 条评论

相关文章

  • Forest plot(森林图) | Cox生存分析可视化

    Meta分析的结果使用森林图进行可视化展示很常见,其实COX生存分析也能用森林图展示。

    西游东行
  • 批量COX回归生存分析图,指定挑选lncRNA基因,森林图,ROC曲线打包给你

    (点评:其实也可以是突变与否的信息,或者其它组学信息,生存分析重点是研究分组,需要表达量,也是根据表达量高低进行分组而已)

    生信技能树
  • 「R」还在手动绘制生存分析森林图?不妨试试 ezcox

    你还在用 R 手写 Cox 分析代码,使用 ggplot2 或 forestplot 绘制 Cox 模型森林图?如果这样,不妨试试 R 包 ezcox。

    王诗翔呀
  • Nomogram(诺莫图) | Logistic、Cox生存分析结果可视化

    Nomogram,也被称为诺莫图或者列线图,在医学领域的期刊出现频率越来愈多,常用于评估肿瘤学和医学的预后情况,可将Logistic回归或Cox回归的结果进行可...

    西游东行
  • 单基因TCGA的Cox森林图

    plot可以设置OS,PFI,DSS和DFI`,然后点上方的搜索?,就可以看到出的图了

    花落花相惜
  • R-forestplot包| HR结果绘制森林图

    上一篇简单的介绍了COX生存分析结果绘制森林图Forest plot(森林图) | Cox生存分析可视化,本文将介绍根据数据集合的基本信息以及点估计值(置信区间...

    西游东行
  • R语言画森林图展示Logistic回归分析的结果

    用户7010445
  • 精心整理(含图PLUS版)|R语言生信分析,可视化

    为了能更方便的查看,检索,对文章进行了精心的整理(PLUS)。建议收藏,各取所需,当前没用也许以后就用到了呢!

    西游东行
  • 如何保证自己的生存分析结果图有意义

    一般来说,我们做生存分析,会有(P<0.05)和(P>0.05)两种结果。KM plot在生物医学中很常见,主要用来做预后分析,比如可以根据表达量把病人分成两组...

    用户1359560
  • TCGA数据挖掘 | Xena - TCGA数据下载

    TCGA (The Cancer Genome Atlas)作为目前超常用的癌症基因信息的数据库,有多种肿瘤的表达谱数据,变异信息(mutation,copy ...

    西游东行
  • 公共数据库不会挖掘没关系,用好临床资料也可以发10分+

    大家好,今天和大家分享的是2020年2月发表在clinical cancer research(IF=10.107)上的一篇文章,免疫检查点抑制剂atezoli...

    百味科研芝士
  • 「R」生存分析森林图玩法:变量筛选与多模型可视化

    之前在写 metawho 包的 deft_show() 函数时用到了 forestmodel 包展示元分析模型结果,后面还用到了我发表在 eLife 上的 TI...

    王诗翔呀
  • 如何用GEO数据集进行批量基因的COX回归分析

    STEP1:获取目标数据GSE62254的基因表达矩阵expr及预后信息survival_file

    生信菜鸟团
  • 免疫预后模型发4.9分,这种套路需要掌握!

    今天分享一篇发表于Cancer Immunol Immun,影响因子为4.9的文献。标题是Immune cell infiltration as a bioma...

    百味科研芝士
  • 自噬相关基因模型在非小细胞肺癌中的预后意义

    各位小伙伴们大家好,这次给大家分享的文献是Prognostic implications of autophagy-associated gene signat...

    百味科研芝士
  • survivalAnalysis——生存分析和相关图的高级接口

    右删失数据:在随访中,观察起始时间已知,但终点事件的发生时间未知,无法获取具体的生存时间,这种类型的生存时间称为右删失。右删失是实际研究中最常见的数据删失类型。...

    作图丫
  • 这篇3+分教你筛选拿出来几个基因应该如何分析

    Construction of a novel gene-based model for prognosis prediction of clear cell ...

    科研菌
  • 手把手掌握临床研究的必备绘图技能:列线图

    列线图(Alignment Diagram),又称诺莫图(Nomogram图),它是建立在多因素回归分析的基础上,这里的回归既包括Logistic回归也包括co...

    百味科研芝士

扫码关注腾讯云开发者

领取腾讯云代金券