怎么用R画出好看的生存曲线

一般想要画的图形不知道函数的时候,就寻求搜索引擎的帮助。之前一直是用百度查找怎么画生存曲线,出来的都是关于survival包的介绍。像http://www.yiibai.com/r/r_survival_analysis.html介绍了基本用法,而http://www.dataguru.cn/thread-230939-1-1.html与http://www.cnblogs.com/wwxbi/p/6182851.html则更为实用一些,还有生信菜鸟团有关于画TCGA数据生存曲线的。这些博文或帖子使用的都是survival包。当然如果只是简单看看差异,我认为用它画图基本够了。但是如果想要把它放到文章或者提交什么工作报告,我觉得它的表现力实在差劲。

几次寻求度娘无果,而且我认为这么想的绝对不仅仅只有我一个,肯定有什么大神受不了然后出手。所以选择用谷歌引擎搜英文的,看看有什么好用的包没。

首先大家得能用谷歌引擎,这里我推荐Hoxx VPN这款浏览器插件,真的非常好用给力。之前用过蓝灯和赛风,效果都没这个好。像蓝灯虽然能穿墙,但是不能用谷歌引擎。火狐和谷歌浏览器都有插件,用谷歌浏览器的朋友如果进不了应用商店,可以下载该插件的.crx文件然后扩展即可。相关问题百度就能找到答案。

长话短说(之前写的内容因为用的VPN,发布的时候简书出问题全没了~~),介绍找到的survminer包。

安装和加载

install.packages("survminer")

Or, install the latest version from GitHub:

if(!require(devtools)) install.packages("devtools")devtools::install_github("kassambara/survminer", build_vignettes = FALSE)
library("survminer")

画生存曲线

构建生存模型

require("survival")
fit <- survfit(Surv(time, status) ~ sex, data = lung)

画基本图:

ggsurvplot(fit, data = lung)

自定义生存曲线

ggsurvplot( fit, 
data = lung, 
size = 1, # change line size 
palette = c("#E7B800", "#2E9FDF"),# custom color palettes 
conf.int = TRUE, # Add confidence interval 
pval = TRUE, # Add p-value 
risk.table = TRUE, # Add risk table 
risk.table.col = "strata",# Risk table color by groups 
legend.labs = c("Male", "Female"), # Change legend labels
risk.table.height = 0.25, # Useful to change when you have multiple groups 
ggtheme = theme_bw() # Change ggplot2 theme)

是不是更美了??

看看更详细的参数列表:

ggsurv <- ggsurvplot( 
fit, # survfit object with calculated statistics. 
data = lung, # data used to fit survival curves. 
risk.table = TRUE, # show risk 
table. pval = TRUE, # show p-value of log-rank test. 
conf.int = TRUE, # show confidence intervals for  
                           # point estimates of survival 
curves. palette = c("#E7B800", "#2E9FDF"), 
xlim = c(0,500), # present narrower X axis, but not affect
                         # survival estimates. 
xlab = "Time in days", # customize X axis label. 
break.time.by = 100, # break X axis in time intervals by 500. 
ggtheme = theme_light(), # customize plot and risk table with a theme. 
risk.table.y.text.col = T,# colour risk table text annotations. 
risk.table.height = 0.25, # the height of the risk table 
risk.table.y.text = FALSE,# show bars instead of names in text annotations 
                                        # in legend of risk table. 
ncensor.plot = TRUE, # plot the number of censored subjects at time t 
ncensor.plot.height = 0.25, 
conf.int.style = "step", # customize style of confidence intervals 
surv.median.line = "hv", # add the median survival pointer. 
legend.labs = c("Male", "Female") # change legend labels. 
)
ggsurv

还可以调整图中的字体和颜色喔~

感觉怎么样?关于图中详细的设置和参数含义的解释,可以点击http://www.sthda.com/english/rpkgs/survminer/index.html查阅。

人该是自己生活的主宰,而不是别人手里的行货