一般想要画的图形不知道函数的时候,就寻求搜索引擎的帮助。之前一直是用百度查找怎么画生存曲线,出来的都是关于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查阅。