R绘图笔记 | 生存曲线的绘制

关于绘图,前面介绍了一些:

R绘图笔记 | 一般的散点图绘制

R绘图笔记 | 柱状图绘制

R绘图笔记 | 直方图和核密度估计图的绘制

R绘图笔记 | 二维散点图与统计直方图组合

R绘图笔记 | 散点分布图与柱形分布图

R绘图笔记 | 箱形图的绘制

R绘图笔记 | 小提琴图与漂亮的云雨图绘制

R绘图笔记 | 多数据系列的箱型图与带抖动散点的多数据系列箱型图

R绘图笔记 | 热图绘制

这里介绍生存曲线的绘制,对于生物医学领域来说,文章中很常见的图。

一.数据处理

如果你想获取该数据用于自己练习,下面是获取数据的地址:

https://docs.qq.com/sheet/DV1JxUnpRR3FqbWN3

数据格式是这样的。

数据第A列是病人ID,B到I列临床信息,其他列是病人的标准化后的基因表达数据。

我们只需要左侧红框的临床数据和一列基因表达数据。

library(dplyr)library(survival)library(survminer)data <- read.csv("BioInfoNotesData3.csv",row.names = 1,stringsAsFactors = F)data <- data[!is.na(data$vital_status),]data$Time <- ifelse(data$vital_status=="Dead",data$days_to_death,data$days_to_last_followup)data <- select(data, Time, everything())surdata <- data[,c(1,4,13)]#选择其中一个基因colnames(surdata) <- c("Time","Status","Gene")surdata$Status <- ifelse(surdata$Status=="Dead",0,1)surdata$Group <- ifelse(surdata$Gene>median(surdata$Gene),"High","Low")surdata$Time <- surdata$Time/365#最后单位是年surdata <- surdata[,c(1,2,4)]head(surdata)

处理后的数据如下:

一列时间,一列生存状态,如果样本的状态是“Dead”,生存分析时候用死亡时间;同样的,如果样本状态是"Alive",那就用最后随访的时间。Alive为0,Dead为1。一列根据基因表达值高低分为2组。

二.绘图

绘图我们用survival包中的survfit函数,该包是用于生存分析的包。这里简单提一下生存分析里面的参数,参数formula写成Surv(Time,Status) ~ Group 的形式,这里是按照前面的数据写的,你名称不一样可以换,但顺序不能变。当然,该包还可以用于其他模型的分析。

survfit(formula, data, weights, subset, na.action,   stype=1, ctype=1, id, cluster, istate, timefix=TRUE,        etype, error,  ...)

我们用前面的数据拟合曲线

fit <- survfit(Surv(Time, Status) ~ Group, data = surdata)

拟合的曲线是可以直接用plot来绘图的。

plot(fit, lty = 2:3)

但用plot来绘图需要自己写很多参数,既然有人造好了轮子,我们就直接用就行啦。

ggsurvplot(fit,palette = c("#E7B800", "#2E9FDF"),# 自定义调色板 #conf.int =TRUE,# 增加置信区间 xlab ="Time in Year", #x轴标题 urv.median.line = "hv", #增加中位生存时间 risk.table = TRUE,# 添加风险表 pval = TRUE, # 添加P值 legend.title = "",# 设置图例标题,这里设置不显示标题,用空格替代 legend = c(0.8,0.75), # 指定图例位置           legend.labs = c("High", "Low")# 指定图例分组标签 #ggtheme =theme_light() )

每一个参数在上面都已经解释了,你可以改改,看看结果图,就知道各参数含义。

另外,还有一个ggsurvplot函数也用来绘制生存曲线。

ggsurvplot(fit, data = NULL, fun = NULL, color = NULL, palette = NULL, linetype = 1, conf.int = FALSE, pval = FALSE, pval.method = FALSE, test.for.trend = FALSE, surv.median.line = "none", risk.table = FALSE, cumevents = FALSE, cumcensor = FALSE, tables.height = 0.25, group.by = NULL, facet.by = NULL, add.all = FALSE, combine = FALSE, ggtheme = theme_survminer(),            tables.theme = ggtheme, ...

参数解释:

  • fit # 拟合的生存曲线对象,就是前面拟合的数据

  • data # 用来拟合生存曲线的数据集,如果没有提供,那么数据将从'fit'对象中提取。

  • fun  # 常用三个字符参数;"event"绘制累计风险概率图 (f(y)=1-y);"cumhaz"绘制累计风险(HR),"pct"绘制生存概率(用百分比表示)

  • color # 设置生存曲线的颜色。

  • cumevents # 逻辑词,是否添加累积事件表

  • cumcensor # 逻辑词,是否添加累积删失表

  • tables.height = 0.25 # 生存曲线图下所有生存表的高度,数值0-1之间

  • group.by  # 包含分组变量名称的字符向量,向量长度≤2

  • facet.by # 字符向量,指定绘制分面生存曲线的分组变量(应≤2)的名称

  • ggtheme=theme_survminer() # 设置ggplot2主题,如ggtheme =theme_light();theme_survminer、theme_cleantable(),也可以是其他包的主题,比如ggpugr包的主题。

  • tables.theme # 作用于生存表的ggplot2主题名称。

  • tables.height # 数值(在[0 - 1]中),指定主要生存图下所有表的高度。

  • add.all = FALSE # 逻辑词;是否添加总患者生存曲线到主生存图中

  • palette # 调色板,默认"hue"。可选调色板有"grey", "npg", "aaas", "lancet",  "jco", "ucscgb", "uchicago", "simpsons" 和 "rickandmorty",除此以外你自己可以指定颜色码,比如前面我指定的"#E7B800", "#2E9FDF"。

  • linetype = 1 # 设置曲线线型。可以按"strata"设置线型;或按数字向量c(1, 2)或按字符向量c("solid", "dashed")设置

  • conf.int # 逻辑词;默认FASLE;为TRUE则绘制曲线置信区间

  • pval = FALSE # 逻辑词;为TRUE则将统计检验计算的p值添加到图上;为数字,则直接指定P值大小,如pval = 0.03;为字符串,则添加字符串到图上,如pval = "p-value: 0.031"

  • pval.method  # 逻辑词,是否添加计算p值的统计方法的文本;只有当 pval = TRUE时, 才会在图上添加检验方法文本

  • test.for.trend # 逻辑词,默认为FALSE;为TRUE则返回趋势p值的检验,趋势检验旨在检验生存曲线的有序差异

  • surv.median.line # 在中位生存时间点处绘制水平或垂直线的字符向量;可用值有"none"、"hv"、"h"、"v";其中v绘制垂直线,h绘制水平线。

  • risk.table = FALSE  # 逻辑词,图上是否添加风险表;"absolute" 显示处于风险中的绝对数量;"percentage" 显示处于风险中的百分比数量;"abs_pct" 显示处于风险中的绝对数量和百分比



其实,参数和上面的ggsurvplot函数是一样的。

ggsurvplot(fit,palette = c("#FF3030", "#0000FF"), xlab ="Time in Year", #x轴标题 urv.median.line = "hv", #增加中位生存时间 #risk.table = TRUE,# 添加风险表 pval = TRUE, # 添加P值 legend.title = "",# 设置图例标题,这里设置不显示标题,用空格替代 legend = c(0.8,0.75), # 指定图例位置 legend.labs = c("High", "Low") ,# 指定图例分组标签 ggtheme =theme_survminer())
ggsurvplot(fit,palette = c("#FF3030", "#0000FF"), linetype =1, xlab ="Time in Year", #x轴标题 urv.median.line = "hv", #增加中位生存时间 #risk.table = TRUE,# 添加风险表 pval = TRUE, # 添加P值 pval.coord=c(15,0.75), legend.title = "",# 设置图例标题,这里设置不显示标题,用空格替代 legend = c(0.8,0.75), # 指定图例位置 legend.labs = c("High", "Low") ,# 指定图例分组标签 ggtheme =theme_test())

参考资料:

1.survival帮助文档

2.survminer帮助文档

3.数据来源:TCGA数据库

(0)

相关推荐

  • Pingouin: 基于pandas和numpy的统计包

    Python网络爬虫与文本数据分析 pingouin是基于Pandas和numpy开发的Python3统计包.主要统计功能有方差分析多元线性回归中介效应分析卡方检验Q-Q图贝叶斯因子信效度检验等等我是 ...

  • R生存分析|关心的变量KM曲线不显著,还有救吗?

    如果想查看某些因素,如年龄,性别,分期,肿瘤数目,大小,实验室指标 或者 通过生信手(tao)段(lu)构建的模型和评分是否对预后有影响时候,经常会把连续变量变为分类变量,然后绘制KM曲线或者列线图等 ...

  • R语言生存分析

    欢迎来到医科研,这里是白介素2的读书笔记,跟我一起聊临床与科研的故事, 生物医学数据挖掘,R语言,TCGA.GEO数据挖掘. R语言生存分析  生存分析是医学数据挖掘中的重要内容 R语言中用于生存分析 ...

  • 生存分析图表美化

    2019中秋节我们的全国巡讲本来应该是去贵州或者兰州,但无奈报名人数太少,临时调到广州.中秋节专场吸引到了几位中山大学临床统计方向博士研究生,其中一位小伙伴把她以前的统计学技能全部R语言化了,会出一系 ...

  • ggstatsplot-专为学术绘图而生(一)

    美图神器ggstatsplot-专为学术论文而生 在CRAN(comprehensive R Achive Netwokrk)中已有13000多个R包了 简单讲ggstatsplot能够提供更为丰富信 ...

  • R数据分析:生存分析的做法和结果解释

    今天给大家写写生存分析: Survival analysis corresponds to a set of statistical approaches used to investigate th ...

  • R绘图笔记 | 热图绘制

    关于绘图,前面介绍了一些: R绘图笔记 | 一般的散点图绘制 R绘图笔记 | 柱状图绘制 R绘图笔记 | 直方图和核密度估计图的绘制 R绘图笔记 | 二维散点图与统计直方图组合 R绘图笔记 | 散点分 ...

  • R绘图笔记 | 一般的散点图绘制

    R绘图笔记 | 一般的散点图绘制

  • R绘图笔记 | 柱状图绘制

    R绘图笔记 | 柱状图绘制

  • R绘图笔记 | 直方图和核密度估计图的绘制

    前面,介绍过散点图绘制,也介绍了柱状图的绘制.本文介绍直方图和核密度估计图的绘制. 1.直方图 直方图是数值数据分布的精确图形表示.这是一个连续变量(定量变量)的概率分布的估计,并且被卡尔·皮尔逊(K ...

  • R绘图笔记 | 箱形图的绘制

    关于绘图图,前面介绍了一些: 这里介绍箱形图的绘制,这些图形在文章中是很常见的,也是必须要掌握的.比如下图中的E图(来自文献:DOI: 10.1002/jcp.30015 ) 一.读入数据 如果你想获 ...

  • R绘图笔记 | 小提琴图与漂亮的云雨图绘制

    关于绘图图,前面介绍了一些: R绘图笔记 | 一般的散点图绘制 R绘图笔记 | 柱状图绘制 R绘图笔记 | 直方图和核密度估计图的绘制 R绘图笔记 | 二维散点图与统计直方图组合 R绘图笔记 | 散点 ...

  • R绘图笔记 | 火山图的绘制

    关于绘图,前面介绍了一些: R绘图笔记 | 一般的散点图绘制 R绘图笔记 | 柱状图绘制 R绘图笔记 | 直方图和核密度估计图的绘制 R绘图笔记 | 二维散点图与统计直方图组合 R绘图笔记 | 散点分 ...

  • R绘图笔记 | GO-BP,GO-MF,GO-CC绘制在同一个柱状图中。

    前面介绍过一些图形的绘制,我们有时候进行GO富集分析,需要绘制富集结果,这里介绍怎么将GO-BP,GO-MF,GO-CC绘制到同一图形中. library(ggplot2)library(RColor ...

  • R绘图笔记 | 词云图的绘制

    词云图的绘制用wordcloud2包的wordcloud2()函数. #install.packages("wordcloud2")library(wordcloud2) word ...