Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >绘制cox生存分析结果的森林图

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

作者头像
生信修炼手册
发布于 2022-06-09 09:56:03
发布于 2022-06-09 09:56:03
2.6K00
代码可运行
举报
文章被收录于专栏:生信修炼手册生信修炼手册
运行总次数:0
代码可运行

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

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

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

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
> 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包灵活性很大,通过调参可以实现很多自定义效果,基本用法如下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
> 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回归的结果中提取我们需要绘图的元素进行绘制即可。

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
> 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·

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-05-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信修炼手册 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
颜值够格的风险森林图
在科研菌公众号聊天框回复“forest779”即可获得输入数据。也可以自己根据表达矩阵与临床信息生成,如下:
科研菌
2021/02/19
1.9K0
颜值够格的风险森林图
收藏贴-森林图绘图R包汇总
森林图是以统计指标和统计分析方法为基础,用数值运算结果绘制出的图型。用以综合展示每个被纳入研究的效应量以及汇总的合并效应量。
作图丫
2022/03/29
2.8K0
收藏贴-森林图绘图R包汇总
批量COX回归生存分析图,指定挑选lncRNA基因,森林图,ROC曲线打包给你
(点评:其实也可以是突变与否的信息,或者其它组学信息,生存分析重点是研究分组,需要表达量,也是根据表达量高低进行分组而已)
生信技能树
2019/05/13
6.7K0
真的!森林图(Forest Plot)全部绘制技巧都在这了
今天这篇推文,小编就带大家了解一下森林图(Forest Plot) 的绘制方法,主要内容如下:
郭好奇同学
2021/07/30
37K1
真的!森林图(Forest Plot)全部绘制技巧都在这了
R-forestplot包| HR结果绘制森林图
上一篇简单的介绍了COX生存分析结果绘制森林图Forest plot(森林图) | Cox生存分析可视化,本文将介绍根据数据集合的基本信息以及点估计值(置信区间区间)的结果直接绘制森林图的方法。
生信补给站
2020/08/06
3.2K0
R语言绘制森林图
在Meta分析中森林图比较常见,其主要是是以统计指标和统计分析方法为基础,用数值运算结果绘制出的图型。它在平面直角坐标系中,以一条垂直的无效线(横坐标刻度为1或0)为中心,用平行于横轴的多条线段描述了每个被纳入研究的效应量和可信区间,用一个棱形(或其它图形)描述了多个研究合并的效应量及可信区间。它非常简单和直观地描述了Meta分析的统计结果,是Meta分析中最常用的结果表达形式。
一粒沙
2019/07/31
8.4K0
RNAseq|批量单因素生存分析 + 绘制森林图
生存分析作为转录组文章中的VIP,太常见了,那么如何批量得到所有候选基因的单因素结果以及可视化结果呢?
生信补给站
2023/08/25
3.3K0
RNAseq|批量单因素生存分析 + 绘制森林图
「R」使用forestplot绘制森林图
森林图常见于元分析,但其使用绝不仅如此,比如我现在想要研究的对象有诸多HR结果,我想要汇总为一张图,森林图就是个非常好的选择。ggpubr包提供的森林图是针对变量分析绘图,我也尝试使用了metafor包的forest画图函数,但太灵活了,我除了感觉文档画的不错,但实际使用却很难得到想要的结果。
王诗翔呀
2020/07/02
8.5K0
R语言生存分析:Cox回归
上次介绍了生存分析中的寿命表、K-M曲线、logrank检验、最佳切点的寻找等,本次主要介绍Cox回归。
医学和生信笔记
2023/02/14
1.9K1
R语言生存分析:Cox回归
R语言亚组分析及森林图绘制
亚组分析的森林图很常见,在各种高分SCI文章中经常见到,其中我最喜欢NEJM的格式,美观,信息量也多。
医学和生信笔记
2023/08/30
2.1K0
R语言亚组分析及森林图绘制
R海拾遗-森林图绘制
这里生成的是一个11行3列的数据框,分别对应均值,上限和下限 第一行和第二行为空值,为了提供绘图中的空行
火星娃统计
2020/09/15
8790
R海拾遗-森林图绘制
一篇基于美剧的scientific study(绘制临床三线表)
文章标题:“Death is certain, the time is not”: mortality and survival in Game of Thrones 网址:
用户1359560
2018/12/27
8210
做COX生存分析是否需要把连续值变成高低二分组?
在进行Cox回归分析时,是否需要将连续变量转化为分类变量(如高低二分组)取决于研究目的和数据特性。Cox回归模型可以处理连续变量,但有时将连续变量转化为分类变量可以提供更明确的临床意义和更易解释的结果。
生信技能树
2025/01/07
4030
做COX生存分析是否需要把连续值变成高低二分组?
R语言画森林图展示Logistic回归分析的结果
之前的推文参考《R语言实战》介绍了R语言做Logistic回归分析的简单小例子,R语言做Logistic回归的简单小例子今天的推文继续,介绍一些Logistic回归分析结果的展示方法。 在文献中,我们常常看到以表格的形式展示各种回归结果(如Logistic回归,多重线性,Cox回归等),比如2019年发表在 Environment International 上的论文 Exposure of metals and PAH through local foods and risk of cancer in a
用户7010445
2021/01/20
4.3K0
R语言画森林图展示Logistic回归分析的结果
【孟德尔随机化】森林图怎么画?
本来想复现上周的那篇文献导读,但是找了很久都没找到他的原始数据,就……很绝望。。。所以给大家补一个森林图的画图方式~
生信菜鸟团
2023/09/19
2.3K1
【孟德尔随机化】森林图怎么画?
RNA-seq入门实战(八):GSVA——基因集变异分析
连续两次求贤令:曾经我给你带来了十万用户,但现在祝你倒闭,以及 生信技能树知识整理实习生招募,让我走大运结识了几位优秀小伙伴!大家开始根据我的ngs组学视频进行一系列公共数据集分析实战,其中几个小伙伴让我非常惊喜,不需要怎么沟通和指导,就默默的完成了一个实战!
生信技能树
2022/07/26
10.1K0
RNA-seq入门实战(八):GSVA——基因集变异分析
🤔 forplo | 冲冲冲!这个画森林图的包好flexible哦~
1写在前面 我想大家肯定都用过森林图,应用比较多的场景可能是展示meta分析,回归分析结果的时候。🥳 画森林图的包还是挺多的,今天介绍一下forplo包的用法。😘 2用到的包 rm(list = ls()) library(tidyverse) library(forplo) library(meta) library(autoReg) library(survival) 3meta分析结果可视化 3.1 示例数据 这里我准备了一个随机数据,假设是我们收集的各篇文章中的某个指标。 dat <- read.
生信漫卷
2023/02/24
5190
🤔 forplo | 冲冲冲!这个画森林图的包好flexible哦~
如何用GEO数据集进行批量基因的COX回归分析
STEP1:获取目标数据GSE62254的基因表达矩阵expr及预后信息survival_file
生信菜鸟团
2021/03/23
5.8K4
玩转 TCGA 数据库 - 生存分析(三)
生存分析:事件的结果和出现这一结果所经历的事件结合起来分析的一种方法。通常情况下,我们设定一个入组时间区间,在这个区间内搜寻患者的第一次患病时间称为起始时间,当过了这个入组时间区间,我们就不再收集患者了,当患者发生终点事件(比如死亡)时,我们记录此事件为终点时间。同时实验会设置一个实验截止时间,实验终止后患者仍未发生终点事件我们将实验截止时间记录为这个患者的终点时间,但终点事件记录为删失。
生信菜鸟团
2025/05/21
5360
玩转 TCGA 数据库 - 生存分析(三)
Forest plot(森林图) | Cox生存分析可视化
Meta分析的结果使用森林图进行可视化展示很常见,其实COX生存分析也能用森林图展示。
生信补给站
2020/08/06
3.1K0
相关推荐
颜值够格的风险森林图
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档