Nothing
## ----include = FALSE----------------------------------------------------------
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>",
echo = TRUE,
eval = TRUE,
fig.height = 6,
fig.width = 9,
fig.align='center'
)
## ----setup, warning=FALSE-----------------------------------------------------
# Load required libraries
library(survSAKK)
library(survival)
# Load lung data
lung <- survival::lung
# Compute survival time in months and years
lung$time.m <- lung$time/365.25*12
lung$time.y <- lung$time/365.25
# Create survival objects
fit.lung.d <- survfit(Surv(time, status) ~ 1, data = lung)
fit.lung.m <- survfit(Surv(time.m, status) ~ 1, data = lung)
fit.lung.arm.m <- survfit(Surv(time.m, status) ~ sex, data = lung)
fit.lung.arm.y <- survfit(Surv(time.y, status) ~ sex, data = lung)
## ----baseplot1----------------------------------------------------------------
# Single arm
surv.plot(fit.lung.m)
# Two arm
surv.plot(fit.lung.arm.m)
## ----baseplot2----------------------------------------------------------------
surv.plot(fit.lung.arm.m,
# Colour
col = c("cadetblue2", "cadetblue"),
# Title
main = "Kaplan-Meier plot",
# Axis label
xlab = "Time since treatment start (months)",
ylab = "Overall survival (probability)"
)
## ----baseplot3----------------------------------------------------------------
# Choose legend position and names of the arms
surv.plot(fit.lung.arm.m,
legend.position = "bottomleft",
legend.name = c("Male", "Female")
)
# Choose legend position manually and add a legend title
surv.plot(fit.lung.arm.m,
legend.position = c(18, 0.9),
legend.name = c("Male", "Female"),
legend.title = "Sex"
)
## ----baseplot4----------------------------------------------------------------
surv.plot(fit.lung.arm.m,
legend.name = c("Male", "Female"),
xticks = seq(0, 36, by = 12),
yticks = seq(0, 1, by = 0.2)
)
# Cut curve at 24 months
surv.plot(fit.lung.arm.m,
legend.name = c("Male", "Female"),
xticks = seq(0, 24, by = 6)
)
## ----baseplot6----------------------------------------------------------------
surv.plot(fit.lung.arm.m,
legend.name = c("Male", "Female"),
# Global adjustment
cex = 1.3,
risktable.name.position = -6,
risktable.title.position = -6
)
## ----baseplot7----------------------------------------------------------------
surv.plot(fit.lung.arm.m,
main = "Kaplan-Meier plot",
legend.name = c("Male", "Female"),
legend.title = "Sex",
# Size of x-axis label
xlab.cex = 1.2,
# Size of y-axis label
ylab.cex = 1.2,
# Size of axis elements
axis.cex = 0.8,
# Size of the censoirng marks
censoring.cex = 1,
# Size of the legend title
legend.title.cex = 1.2,
# Size of the risktable
risktable.cex = 0.7,
# Size of the risktable name
risktable.name.cex = 0.9
)
## ----baseplot8----------------------------------------------------------------
surv.plot(fit.lung.arm.m,
legend.name = c("Male", "Female"),
xlab.pos = 6,
ylab.pos = 5
)
## ----baseplot9----------------------------------------------------------------
# Change the margins and shift the y axis label
surv.plot(fit.lung.arm.m,
legend.name = c("Male", "Female"),
# New margin area
margin.bottom = 6,
margin.left = 7,
margin.top = 1,
margin.right = 2,
# Define margin of the y-axis label
ylab.pos = 4
)
## ----baseplot10---------------------------------------------------------------
# Time unit of month
surv.plot(fit.lung.arm.m,
time.unit = "month",
y.unit = "probability",
legend.name = c("Male", "Female")
)
# Time unit of year
surv.plot(fit.lung.arm.y,
time.unit = "year",
y.unit = "percent",
legend.name = c("Male", "Female")
)
## ----risktable1---------------------------------------------------------------
surv.plot(fit.lung.arm.m,
legend.name = c("Male", "Female"),
risktable = FALSE
)
## ----risktable.pos1-----------------------------------------------------------
# Move risk table names and titles to the left
surv.plot(fit.lung.arm.m,
legend.name = c("male", "female"),
risktable.name.position = -6,
risktable.title.position = -6
)
## ----risktable.pos2-----------------------------------------------------------
surv.plot(fit.lung.arm.m,
legend.name = c("Male", "Female"),
risktable.name = c("M", "F"),
risktable.col = TRUE,
risktable.title = "Number at risk",
risktable.title.font = 4,
risktable.title.col = "#E41A1C"
)
## ----risktable_censoring------------------------------------------------------
surv.plot(fit.lung.arm.m,
risktable.censoring = TRUE)
## ----median-------------------------------------------------------------------
# Drawing a segment line for the median, which corresponds to 0.5 quantile
surv.plot(fit.lung.arm.m,
legend.name = c("Male", "Female"),
segment.quantile = 0.5
)
surv.plot(fit.lung.arm.m,
legend.name = c("Male", "Female"),
segment.quantile = 0.5,
# Specifying time unit
time.unit = "month"
)
## ----quantile0_75-------------------------------------------------------------
# Drawing segment for the 0.75 quantile
surv.plot(fit.lung.arm.m,
legend.name = c("Male", "Female"),
segment.quantile = 0.75
)
## ----timepoint----------------------------------------------------------------
# Drawing a segment line at 12 months
surv.plot(fit.lung.arm.m,
legend.name = c("Male", "Female"),
time.unit = "month",
segment.timepoint = 12
)
## ----segment1-----------------------------------------------------------------
surv.plot(fit.lung.arm.m,
legend.name = c("Male", "Female"),
segment.timepoint = 18,
segment.annotation = "top",
time.unit = "month"
)
## ----segment2-----------------------------------------------------------------
surv.plot(fit.lung.arm.m,
col = c("cadetblue2", "cadetblue"),
legend.name = c("Male", "Female"),
time.unit = "month",
segment.quantile = 0.5,
segment.font = 10,
segment.main.font = 11,
segment.main = "Median PFS in months (95% CI)",
segment.cex = 0.8,
segment.annotation.col = "darkgray"
)
## ----segment3-----------------------------------------------------------------
# Several quantiles
surv.plot(fit.lung.arm.m,
legend.name = c("Male", "Female"),
segment.quantile = c(0.5, 0.25),
segment.annotation = "none",
time.unit = "month"
)
# Several time points
surv.plot(fit.lung.arm.m,
legend.name = c("Male", "Female"),
segment.timepoint = c(6, 18),
segment.annotation = "none",
time.unit = "month"
)
## ----segment5-----------------------------------------------------------------
surv.plot(fit.lung.arm.m,
legend.name = c("Male", "Female"),
time.unit = "month",
segment.quantile = 0.5,
segment.lwd = 2,
segment.lty = "dashed",
segment.annotation.space = 0.1
)
## ----segment7-----------------------------------------------------------------
surv.plot(fit.lung.arm.m,
legend.name = c("Male", "Female"),
time.unit = "month",
segment.quantile = 0.5,
segment.confint = FALSE
)
surv.plot(fit.lung.arm.m,
legend.name = c("Male", "Female"),
time.unit = "month",
segment.timepoint = 18,
segment.confint = FALSE,
segment.annotation = "bottomleft"
)
## ----segment6-----------------------------------------------------------------
surv.plot(fit.lung.arm.m,
legend.name = c("Male", "Female"),
segment.quantile = 0.5,
conf.int = 0.8
)
surv.plot(fit.lung.arm.m,
legend.name = c("Male", "Female"),
time.unit = "month",
segment.timepoint = 18,
y.unit = "percent",
conf.int = 0.9
)
## ----stat1--------------------------------------------------------------------
surv.plot(fit.lung.arm.m,
legend.name = c("Male", "Female"),
stat = "logrank",
)
## ----stat2--------------------------------------------------------------------
surv.plot(fit.lung.arm.m,
legend.name = c("Male", "Female"),
stat = "coxph"
)
## ----stat3--------------------------------------------------------------------
surv.plot(fit.lung.arm.m,
legend.name = c("Male", "Female"),
stat = "coxph_logrank"
)
## ----stat4--------------------------------------------------------------------
surv.plot(fit.lung.arm.m,
legend.name = c("Male", "Female"),
stat = "logrank",
stat.position = "right",
stat.col = "darkgrey",
stat.cex = 0.8,
stat.font = 3
)
## ----stat_ref_arm-------------------------------------------------------------
surv.plot(fit.lung.arm.m,
legend.name = c("Female","Male"),
stat = "coxph_logrank",
reference.arm = 2,
stat.conf.int = 0.80
)
## ----stat_stratified----------------------------------------------------------
# Fit survival object with stratification
fit_lung_stratified <- survfit(Surv(time.m, status) ~ sex + strata(ph.ecog), data = lung)
surv.plot(fit.lung.arm.m,
stat.fit = fit_lung_stratified,
legend.name = c("Male", "Female"),
stat = "coxph_logrank"
)
## ----Design1------------------------------------------------------------------
surv.plot(fit.lung.arm.m,
theme = "ESMO")
## ----Design2------------------------------------------------------------------
surv.plot(fit.lung.arm.m,
theme = "Lancet")
## ----default_setting, echo=FALSE, eval=TRUE-----------------------------------
# Save old settings
users_default_setting <- par(no.readonly = TRUE)
## ----plots1, fig.height = 8, fig.width = 8------------------------------------
# Creating 4 sub-plot
par(mfrow=c(2,2))
# Plot 1
surv.plot(fit.lung.d)
# Plot 2
surv.plot(fit.lung.arm.m,
time.unit = "month")
# Plot 3
surv.plot(fit.lung.arm.y,
col = c("cadetblue2", "cadetblue"),
time.unit = "year",
stat = "coxph")
# Plot 4
surv.plot(fit.lung.arm.m,
# Cusomization of the survival plot
main = "Kaplan-Meier plot",
legend.name = c("Male", "Female"),
legend.title = "Sex",
xlab.cex = 1.2,
ylab.cex = 1.2,
axis.cex = 0.8,
censoring.cex = 1,
legend.title.cex = 1.2,
# Customization of the risktable
risktable.name.position = -9,
risktable.title.position = -9,
risktable.cex = 0.7)
## ----plots2, fig.height = 10, fig.width = 8-----------------------------------
par(mfrow=c(2,1))
# Plot 1
surv.plot(fit.lung.arm.m,
col = c("cadetblue2", "cadetblue"),
time.unit = "month",
segment.quantile = 0.5)
# Plot 2
surv.plot(fit.lung.arm.m,
col = c("cadetblue2", "cadetblue"),
time.unit = "month",
segment.timepoint = 6)
## ----resetSetting, echo = FALSE, eval = TRUE----------------------------------
# Ensure that old settings are restored when the function exits
par(users_default_setting)
## ----plots3, fig.height = 10, fig.width = 8-----------------------------------
split.screen(c(2,1))
screen(1)
surv.plot(fit.lung.arm.m,
time.unit = "month",
segment.quantile = 0.5,
segment.confint = FALSE)
screen(2)
surv.plot(fit.lung.arm.m,
time.unit = "month",
segment.quantile = 0.75,
segment.confint = FALSE)
close.screen(all = TRUE)
## ----export1, eval = FALSE----------------------------------------------------
#
# png(file = file.path("kaplan_meier_plot.png"),
# width = 20,
# height = 14,
# units = "cm",
# res = 300)
# surv.plot(fit.lung.arm.m,
# risktable.name.position=-4,
# risktable.title.position=-4)
# dev.off()
## ----export2, eval = FALSE----------------------------------------------------
#
# png(file = file.path("kaplan_meier_plot_big_font.png"),
# width = 20*0.7,
# height = 14*0.7,
# units = "cm",
# res = 300)
# surv.plot(fit.lung.arm.m,
# ylab = "Estimated survival \n (probability)",
# risktable.name.position=-6.5,
# risktable.title.position=-6.5)
# dev.off()
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.