When You Went too Far with Survival Plots During the survminer 1st Anniversary
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.
We are celebrating the 1st anniversary of the survminer’s release on CRAN! Due to that fact I have prepared the most (uber platinum) customized survival plot that I could imagine. I went too far because it took over 30 parameters to create a graph..
survminer, a package for drawing easily beautiful and ‘ready-to-publish’ survival curves with the ‘number at risk’ table and ‘censoring count plot’, has became very popular at the end of a previous year. It happend due to 3 great methodology posts about Cox Proportional Hazards model and Survival Analysis basics by Alboukadel Kassambara (kassambara) published on STDHA
If you are working in the survival analysis field, you might be interested in reading the post covering the newest features in survminer: survminer 0.2.4
Right now, after a year of the first CRAN release, survminer has been downloaded 11k times and has been used and cited in several research articles:
- Primary resistance to PD-1 blockade mediated by JAK1/2 mutations
- Methods for Evaluating Respondent Attrition in Web-Based Surveys
- Antiretroviral therapy improves survival among TB-HIV co-infected patients who have CD4+ T-cell count above 350cells/mm3
- The serological response against foot and mouth disease virus elicited by repeated vaccination of dairy cattl
- The serological response against foot and mouth disease virus elicited by repeated vaccination of dairy cattle
- ActiviTeen: A Protocol for Deployment of a Consumer Wearable Device in an Academic Setting
Due to the celebration of it’s 1st anniversary on CRAN, I have prepared a long survival graph of Kaplan-Meier estimates of survival curves, where each option is described below. I think I went too far to present the possible customization of the graph because this example takes over 30 parameters!
devtools::install_github("kassambara/survminer", build_vignettes = TRUE) | |
library("survminer") | |
library("survival") | |
fit<- survfit(Surv(time, status) ~ sex, data = lung) | |
ggsurvplot( | |
fit, # survfit object with calculated statistics. | |
risk.table = TRUE, # show risk table. | |
pval = TRUE, # show p-value of log-rank test. | |
conf.int = TRUE, # show confidence intervals for | |
# point estimaes of survival curves. | |
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.y.text = FALSE,# show bars instead of names in text annotations | |
# in legend of risk table. | |
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. | |
palette = | |
c("#E7B800", "#2E9FDF"),# custom color palettes. | |
main = "Survival curves", # specify the title of the plot | |
submain = "Based on Kaplan-Meier estimates", # the subtitle of the plot | |
caption = "created with survminer", # the caption of the plot | |
font.main = c(16, "bold", "darkblue"), # font for titles of the plot, the table and censor part | |
font.submain = c(15, "bold.italic", "purple"), # font for subtitles in the plot, the table and censor part | |
font.caption = c(14, "plain", "orange"), # font for captions in the plot, the table and censor part | |
font.x = c(14, "bold.italic", "red"), # font for x axises in the plot, the table and censor part | |
font.y = c(14, "bold.italic", "darkred"), # font for y axises in the plot, the table and censor part | |
font.tickslab = c(12, "plain", "darkgreen"), # font for ticklabs in the plot, the table and censor part | |
########## risk table #########, | |
risk.table.title = "Note the risk set sizes", # the title of the risk table | |
risk.table.subtitle = "and remember about censoring.", # the subtitle of the risk table | |
risk.table.caption = "source code: website.com", # the caption of the risk table | |
risk.table.height = 0.35, # the height of the risk table | |
########## ncensor plot ###### | |
ncensor.plot = TRUE, # plot the number of censored subjects at time t | |
ncensor.plot.title = "Number of censorings", # as above but for the censoring plot | |
ncensor.plot.subtitle = "over the time.", | |
ncensor.plot.caption = "data available at data.com", | |
ncensor.plot.height = 0.35 | |
) |
R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.