The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.

Title: Kaplan-Meier Plot with 'ggplot2'
Version: 0.5.14
Date: 2025-07-30
Description: The function 'jskm()' creates publication quality Kaplan-Meier plot with at risk tables below. 'svyjskm()' provides plot for weighted Kaplan-Meier estimator.
Depends: R (≥ 3.4.0)
License: Apache License 2.0
Encoding: UTF-8
Imports: ggplot2, ggpubr, survival, survey, scales, patchwork, cmprsk, stats
RoxygenNote: 7.3.2
URL: https://github.com/jinseob2kim/jskm, https://jinseob2kim.github.io/jskm/
BugReports: https://github.com/jinseob2kim/jstable/issues
Suggests: testthat, knitr, rmarkdown
VignetteBuilder: knitr
NeedsCompilation: no
Packaged: 2025-07-30 08:34:36 UTC; js
Author: Jinseob Kim ORCID iD [aut, cre], yoonkyoung Chun [aut], Zarathu [cph, fnd], sungho Choi [aut], Mingu Jee [aut]
Maintainer: Jinseob Kim <jinseob2kim@gmail.com>
Repository: CRAN
Date/Publication: 2025-07-30 09:00:02 UTC

Adjusted Log-Rank Test

Description

Performs an adjusted log-rank test considering weights.

Usage

adjusted.LR(times, failures, variable, weights = NULL)

Arguments

times

A numeric vector of survival times.

failures

A binary vector indicating event occurrence.

variable

A numeric binary variable (0 and 1) indicating group membership.

weights

A numeric vector of weights.

Value

A list containing the test statistic and p-value.


Creates a Kaplan-Meier plot for survfit object.

Description

Creates a Kaplan-Meier plot with at risk tables below for survfit object.

Usage

jskm(
  sfit,
  table = FALSE,
  table.censor = FALSE,
  xlabs = "Time-to-event",
  ylabs = NULL,
  xlims = c(0, max(sfit$time)),
  ylims = c(0, 1),
  surv.scale = c("default", "percent"),
  ystratalabs = NULL,
  ystrataname = "Strata",
  timeby = signif(max(sfit$time)/7, 1),
  main = "",
  pval = FALSE,
  pval.size = 5,
  pval.coord = c(NULL, NULL),
  pval.testname = T,
  marks = TRUE,
  shape = 3,
  med = FALSE,
  legend = TRUE,
  legendposition = c(0.85, 0.8),
  ci = FALSE,
  subs = NULL,
  label.nrisk = "Numbers at risk",
  size.label.nrisk = 10,
  linecols = "Set1",
  dashed = FALSE,
  cumhaz = F,
  cluster.option = "None",
  cluster.var = NULL,
  data = NULL,
  cut.landmark = NULL,
  showpercent = F,
  status.cmprsk = NULL,
  linewidth = 0.75,
  theme = NULL,
  nejm.infigure.ratiow = 0.6,
  nejm.infigure.ratioh = 0.5,
  nejm.infigure.xlim = NULL,
  nejm.infigure.ylim = c(0, 1),
  surv.by = NULL,
  nejm.surv.by = NULL,
  hr = FALSE,
  hr.size = 5,
  hr.coord = c(NULL, NULL),
  hr.testname = F,
  ...
)

Arguments

sfit

a survfit object

table

logical: Create a table graphic below the K-M plot, indicating at-risk numbers?

table.censor

logical: Add numbers of censored in table graphic

xlabs

x-axis label

ylabs

y-axis label

xlims

numeric: list of min and max for x-axis. Default = c(0,max(sfit$time))

ylims

numeric: list of min and max for y-axis. Default = c(0,1)

surv.scale

scale transformation of survival curves. Allowed values are "default" or "percent".

ystratalabs

character list. A list of names for each strata. Default = names(sfit$strata)

ystrataname

The legend name. Default = "Strata"

timeby

numeric: control the granularity along the time-axis; defaults to 7 time-points. Default = signif(max(sfit$time)/7, 1)

main

plot title

pval

logical: add the pvalue to the plot?

pval.size

numeric value specifying the p-value text size. Default is 5.

pval.coord

numeric vector, of length 2, specifying the x and y coordinates of the p-value. Default values are NULL

pval.testname

logical: add '(Log-rank)' text to p-value. Default = F

marks

logical: should censoring marks be added?

shape

what shape should the censoring marks be, default is a vertical line

med

should a median line be added to the plot? Default = F

legend

logical. should a legend be added to the plot?

legendposition

numeric. x, y position of the legend if plotted. Default=c(0.85,0.8)

ci

logical. Should confidence intervals be plotted. Default = FALSE

subs

= NULL,

label.nrisk

Numbers at risk label. Default = "Numbers at risk"

size.label.nrisk

Font size of label.nrisk. Default = 10

linecols

Character or Character vector. Colour brewer pallettes too colour lines. Default ="Set1", "black" for black with dashed line, character vector for the customization of line colors.

dashed

logical. Should a variety of linetypes be used to identify lines. Default = FALSE

cumhaz

Show cumulative incidence function, Default: F

cluster.option

Cluster option for p value, Option: "None", "cluster", "frailty", Default: "None"

cluster.var

Cluster variable

data

select specific data - for reactive input, Default = NULL

cut.landmark

cut-off for landmark analysis, Default = NULL

showpercent

Shows the percentages on the right side.

status.cmprsk

Status value when competing risk analysis, Default = 2nd level of status variable

linewidth

Line witdh, Default = 0.75

theme

Theme of the plot, Default = NULL, "nejm" for NEJMOA style, "jama" for JAMA style

nejm.infigure.ratiow

Ratio of infigure width to total width, Default = 0.6

nejm.infigure.ratioh

Ratio of infigure height to total height, Default = 0.5

nejm.infigure.xlim

x-axis limit of infigure, Default = NULL

nejm.infigure.ylim

y-axis limit of infigure, Default = c(0,1)

surv.by

breaks unit in y-axis, default = NULL(ggplot default)

nejm.surv.by

breaks unit in y-axis in nejm figure, default = NULL(ggplot default)

hr

logical: add the hazard ratio to the plot?

hr.size

numeric value specifying the HR text size. Default is 5.

hr.coord

numeric vector, of length 2, specifying the x and y coordinates of the p-value. Default values are NULL

hr.testname

logical: add '(Log-rank)' text to p-value. Default = F

...

PARAM_DESCRIPTION

Details

DETAILS

Value

Plot

Author(s)

Jinseob Kim, but heavily modified version of a script created by Michael Way. https://github.com/michaelway/ggkm/ I have packaged this function, added functions to namespace and included a range of new parameters.

Examples

library(survival)
data(colon)
fit <- survfit(Surv(time, status) ~ rx, data = colon)
jskm(fit, timeby = 500)

Creates a Weighted Kaplan-Meier plot - svykm.object in survey package

Description

Creates a Weighted Kaplan-Meier plot - svykm.object in survey package

Usage

svyjskm(
  sfit,
  theme = NULL,
  xlabs = "Time-to-event",
  ylabs = "Survival probability",
  xlims = NULL,
  ylims = c(0, 1),
  ystratalabs = NULL,
  ystrataname = NULL,
  surv.scale = c("default", "percent"),
  timeby = NULL,
  main = "",
  pval = FALSE,
  pval.size = 4,
  pval.coord = c(NULL, NULL),
  pval.testname = F,
  marks = FALSE,
  hr = FALSE,
  hr.size = 2,
  hr.coord = c(NULL, NULL),
  med = FALSE,
  legend = TRUE,
  legendposition = c(0.85, 0.8),
  ci = NULL,
  linecols = "Set1",
  dashed = FALSE,
  cumhaz = F,
  design = NULL,
  subs = NULL,
  table = F,
  table.censor = F,
  label.nrisk = "Numbers at risk",
  size.label.nrisk = 10,
  cut.landmark = NULL,
  showpercent = F,
  linewidth = 0.75,
  nejm.infigure.ratiow = 0.6,
  nejm.infigure.ratioh = 0.5,
  nejm.infigure.xlim = NULL,
  nejm.infigure.ylim = c(0, 1),
  surv.by = NULL,
  nejm.surv.by = NULL,
  ...
)

Arguments

sfit

a svykm object

theme

Theme of the plot, Default = NULL, "nejm" for NEJMOA style, "jama" for JAMA style

xlabs

x-axis label, Default: 'Time-to-event'

ylabs

y-axis label.

xlims

numeric: list of min and max for x-axis. Default: NULL

ylims

numeric: list of min and max for y-axis. Default: c(0, 1)

ystratalabs

character list. A list of names for each strata. Default: NULL

ystrataname

The legend name. Default: 'Strata'

surv.scale

scale transformation of survival curves. Allowed values are "default" or "percent".

timeby

numeric: control the granularity along the time-axis; defaults to 7 time-points.

main

plot title, Default: ”

pval

logical: add the pvalue to the plot?, Default: FALSE

pval.size

numeric value specifying the p-value text size. Default is 4.

pval.coord

numeric vector, of length 2, specifying the x and y coordinates of the p-value. Default values are NULL

pval.testname

logical: add '(Log-rank)' text to p-value. Default = F

marks

logical: should censoring marks be added?

hr

logical: add the Hazard Ratio to the plot?, Default: FALSE

hr.size

numeric value specifying the Hazard Ratio text size. Default is 2.

hr.coord

numeric vector, of length 2, specifying the x and y coordinates of the Hazard Ratio. Default values are NULL

med

should a median line be added to the plot? Default = F

legend

logical. should a legend be added to the plot?

legendposition

numeric. x, y position of the legend if plotted. Default=c(0.85,0.8)

ci

logical. Should confidence intervals be plotted. Default = NULL

linecols

Character or Character vector. Colour brewer pallettes too colour lines. Default ="Set1", "black" for black with dashed line, character vector for the customization of line colors.

dashed

logical. Should a variety of linetypes be used to identify lines. Default: FALSE

cumhaz

Show cumulaive incidence function, Default: F

design

Data design for reactive design data , Default: NULL

subs

= NULL,

table

logical: Create a table graphic below the K-M plot, indicating at-risk numbers?

table.censor

logical: Add numbers of censored in table graphic

label.nrisk

Numbers at risk label. Default = "Numbers at risk"

size.label.nrisk

Font size of label.nrisk. Default = 10

cut.landmark

cut-off for landmark analysis, Default = NULL

showpercent

Shows the percentages on the right side.

linewidth

Line witdh, Default = 0.75

nejm.infigure.ratiow

Ratio of infigure width to total width, Default = 0.6

nejm.infigure.ratioh

Ratio of infigure height to total height, Default = 0.5

nejm.infigure.xlim

x-axis limit of infigure, Default = NULL

nejm.infigure.ylim

y-axis limit of infigure, Default = c(0,1)

surv.by

breaks unit in y-axis, default = NULL(ggplot default)

nejm.surv.by

breaks unit in y-axis in nejm figure, default = NULL(ggplot default)

...

PARAM_DESCRIPTION

Details

DETAILS

Value

plot

Examples

library(survey)
data(pbc, package = "survival")
pbc$randomized <- with(pbc, !is.na(trt) & trt > 0)
biasmodel <- glm(randomized ~ age * edema, data = pbc)
pbc$randprob <- fitted(biasmodel)
dpbc <- svydesign(id = ~1, prob = ~randprob, strata = ~edema, data = subset(pbc, randomized))
s1 <- svykm(Surv(time, status > 0) ~ sex, design = dpbc)
svyjskm(s1)

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.