上期内容中,我们介绍了竞争风险模型(第11期.生存分析IV-当生存分析遇上竞争事件)。我们用之前四期内容,从方方面面对生存分析做了很多的介绍,你一定已经学会了基本的统计学原理和操作。但是除了做出统计结果,我们还需要用图来更直观地展示我们的数据,其中生存曲线就是临床研究中常常用到的,今天就教大家画一张美美的生存曲线!
一、数据准备
之前说过,生存分析有3个非常重要的变量,分别是随访时间、生存状态和分组变量,我们以自带数据集lung做演示。其中time就是随访的时间,单位是“天“,status是生存状态,sex表示性别,分别代表”男性”和”女性”,是本次示例中的分组变量(如下图)。
#install.packages(c('survival','survminer','ggsurvfit'))
library(survival)
library(survminer)
library(ggsurvfit)
lung=lung
二、作图
话不多说,我们直接上代码:
fit=survfit(Surv(time,status)~sex,data=lung)
ggsurvplot (fit,
ggtheme=theme_bw(),#调整背景风格 https://ggplot2.tidyverse.org/reference/ggtheme.html
title="",#设定标题
font.title=c(14,"bold","black"),#调整标题的字体大小、颜色等
xlab='Follow-up time (year)',#设定x轴标签
ylab="Survival probability (%)",#设定y轴标签
font.x=c(13,"plain","black"), #调整x轴的字体大小、颜色等
font.y=c(13,"plain","black"),#调整y轴的字体大小、颜色等
xlim=c(0,800),#设定x轴范围
ylim=c(0,1),#设定y轴范围
font.tickslab=10,#调整刻度的字体大小、颜色等
break.x.by=365.25,#设定x轴间距,365.25代表1年
break.y.by=0.25,#设定y轴间距
xscale='d_y',#表示将时间日转化为年,还可以"m_y"等,具体见帮助文档
surv.scale="percent",#以百分数表示
censor=TRUE, #显示删失点
censor.shape=124, #删失点的形状
censor.size=2,#设定删失点大小
conf.int=TRUE, #添加图形加置信区间
palette=c('#54738E', '#82AC7C'),#自定义曲线颜色,也可选内置配色
pval = TRUE,#添加p值,也可以自定义,如pval="P < 0.001"
pval.size=4,#值字体大小
pval.method = TRUE, #添加检验方法,默认是log-rank
pval.method.size=4, #log-rank字体大小
pval.coord=c(0.5,0.15), #P值显示位置
surv.median.line = "hv",#添加中位生存时间
risk.table =TRUE, #添加风险表
risk.table.col="black",#风险表设定颜色
risk.table.height=0.2,#风险表高度(0-1之间)
risk.table.fontsize=4,#字体大小
risk.table.y.text=FALSE, #如为TRUE,风险表纵轴显示为male和female
risk.table.y.text.col=TRUE, #如为FALSE,风险表纵轴不显示为图例颜色
risk.table.pos="out",#设定风险表的位置,在生存曲线内("in")还是外("out")
risk.table.title="Number at risk ",#设定风险表的标题
tables.theme = theme_void(),##调整风险表的风格
legend.title="",#设定图例标题
legend=c(0.8,0.8),#设定图例位置
legend.labs=c("Male","Female"), #设定图例标签
font.legend=c(11,"plain","black"),#设定图例字体大小、颜色等
size = 0.8,#调整生存曲线的粗细
linetype="solid"##调整生存曲线
)
其实ggsurvfit是个非常强大的包,还有很多参数等待大家去探索,具体的可以运行”?ggsurvplot”查看帮助文档哦。那么这就是本期的全部内容啦,你学会了吗?大家对于推送内容有任何问题或建议可以在公众号菜单栏“更多--读者的话” 栏目中提出,我们会尽快回复!
联系客服