Q&A | 如何用R批量绘制并导出生存曲线图

简介: Q&A | 如何用R批量绘制并导出生存曲线图

生存分析


关于如何在R中进行生存分析的问题,在前面的推文中已经详细的介绍过。详见:survminer | 生存分析及其可视化ggsurvplot()生成的结果。很多同学直接使用ggsave()会产生报错。还有一个问题就是当你有好多个基因/临床参数等时,如何批量的进行生存分析。今天这篇推文就详细的给大家讲一下这两个问题。


批量绘制


数据格式


我将surviavl包里的内置数据集colon进行一定的修改作为示例数据使用。


#加载包
library("survminer")
library("survival")
#导入示例数据并查看
colon <- read.csv("colon.csv",row.names = 1)
head(colon)
> head(colon)
    study      rx sex   age obstruct
853     1     Obs   1 young        1
413     1     Obs   0 young        0
140     1     Obs   0 young        1
94      1 Lev+5FU   0 young        0
580     1 Lev+5FU   0 young        0
863     1     Lev   0 young        0
    perfor adhere surg gene1 gene2
853      0      1    0   Low   Low
413      0      0    1   Low   Low
140      0      0    0  High   Low
94       0      1    1  High   Low
580      0      0    0   Low   Low
863      0      0    0   Low   Low
    status time
853      1  612
413      0 2234
140      0 2826
94       0 2869
580      0 1421
863      1 1325

对sex~gene2的所有变量进行生存分析

# 要做生成分析的所有变量
genes <- names(colon)[3:10]
genes
# 循环并保存图片
for (i in genes){
  print(i)
  fit <- survfit(Surv( time,status) ~ colon[,i], colon)
  p <- ggsurvplot(fit, linetype = "strata",
                  pval = TRUE,
                  palette = "Dark2",
                  legend.labs =c(paste0(i, "=H"), paste0(i, "=L")))
  pdf(paste0(i, "_surv.pdf"),width = 5, height = 5)
  print(p, newpage = FALSE)
  dev.off()
}

查看一下结果:


image.png

输出文件


随便打开一个看看:

image.png

大功告成啦~


相关文章
|
Windows
mathtype7产品激活密钥最新
MathType是强大的数学公式编辑器,MathType公式编辑器可以说是专门为理科生准备的软件,它可以帮助用户快速的在各种文档中插入符号和公式,不论是简单的公式和符号,还是复杂的都可以非常轻松的输入,并且在与office文档结合使用时,表现的非常完美,是非常好的一款软件,与常见的文字处理软件和演示程序配合使用,能够在各种文档中加入复杂的数学公式和符号,可用在编辑数学试卷、书籍、报刊、论文、幻灯演示等方面,是编辑数学资料的得力工具。
51655 0
|
敏捷开发 Dubbo Java
需求开发人日评估
随着敏捷开发在国内的风靡,越来越多的团队开始推行敏捷开发,这其中有一个关键事项就是:工时的人日评估。简单来说就是:项目经理会让开发人员自己评估自己负责的模块大概需要的开发周期。 人日,即按照1人几天完成,如1/人日:表示这个需求需要1个人1天完成,如果有2个人一起做,可能就是0.5天(需求开发一般1+1 < 2,因为有代码合并的兼容性要处理)。
1458 1
|
Web App开发
Python+selenium 实现自动上传并发布微信视频号短视频实例演示
Python+selenium 实现自动上传并发布微信视频号短视频实例演示
1456 0
Python+selenium 实现自动上传并发布微信视频号短视频实例演示
|
移动开发 Java 开发工具
Android客户端三步完成支付宝支付SDK接入
Android客户端三步完成支付宝支付SDK接入
2439 0
|
SQL Java 数据库连接
Spring问题之@RequestMapping注解的作用和使用方式是啥
Spring问题之@RequestMapping注解的作用和使用方式是啥
250 3
|
人工智能 Ubuntu Linux
RK3568开发笔记(三):RK3568虚拟机基础环境搭建之更新源、安装网络工具、串口调试、网络连接、文件传输、安装vscode和samba共享服务
开始搭建RK3568的基础虚拟机,具备基本的通用功能,主要包含了串口工具minicom,远程登陆ssh,远程传输filezilla,代码编辑工具vscode。
RK3568开发笔记(三):RK3568虚拟机基础环境搭建之更新源、安装网络工具、串口调试、网络连接、文件传输、安装vscode和samba共享服务
|
机器人 Linux 开发工具
小白必看!入门嵌入式你需要了解这些!
【9月更文挑战第23天】在科技迅速发展的今天,嵌入式系统已广泛应用,覆盖了从智能家居到工业自动化等多个领域。本文将向你介绍嵌入式系统的基础概念,其特点,应用范围,并指导你如何掌握必要的知识和技能,包括电路基础、C语言编程、微处理器架构等,以及推荐的学习路径与方法。对于初学者来说,这是一份不错的指南。
963 1
|
JavaScript 前端开发
PPTist:在线演示文稿的开源解决方案
PPTist:在线演示文稿的开源解决方案
855 6
|
监控 网络协议 程序员
不再困惑!一文搞懂TCP与UDP的所有区别
**TCP与UDP是网络协议,TCP提供可靠连接(面向连接、顺序传输、错误检查),适合HTTP、FTP、SMTP等需要数据完整性的应用。UDP则是无连接、快速但不可靠,常用于DNS、RIP、SNMP等实时或效率优先的场景。**
776 0

热门文章

最新文章