File Exchange

image thumbnail


version by Giuseppe Cardillo
Plot the Kaplan-Meier estimation of the survival function


Updated 20 Apr 2018

GitHub view license on GitHub

Plot the Kaplan-Meier estimation of the survival function
Survival times are data that measure follow-up time from a defined starting point to the occurrence of a given event, for example the time from the beginning to the end of a remission period or the time from the diagnosis of a disease to death. Standard statistical techniques cannot usually be applied because the underlying distribution is rarely Normal and the data are often "censored". A survival time is described as censored when there is a follow-up time but the event has not yet occurred or is not known to have occurred. For example, if remission time is being studied and the patient is still in remission at the end of the study, then that patient's remission time would be censored. If a patient for some reason drops out of a study before the end of the study period, then that patient's follow-up time would also be considered to be censored. The survival function S(t) is defined as the probability of surviving at least to time t. The graph of S(t) against t is called the survival curve. The Kaplan-Meier method can be used to estimate this curve from the observed survival times without the assumption of an underlying probability distribution.
Created by Giuseppe Cardillo

To cite this file, this would be an appropriate format:Curve Cardillo G. (2008). KMPLOT: Kaplan-Meier estimation of the survival function.

Cite As

Giuseppe Cardillo (2020). KMplot (, GitHub. Retrieved .

Comments and Ratings (10)

Looks great, thanks!

As I rote in the help section, the survivors will have 0 flag in the second column of the Nx2 input matrix

How do i deal with survivors in this program? people that haven't died (yet) during the follow ups.

Xiaoya Li

Elaine Fang


Sometimes this function fails to plot the survival curve reporting such error: "CAT arguments dimensions are not consistent." "Error in ==> kmplot at 240 str2=['Median time ' num2str(mt)]; %string for LEGEND function".

usually you dont exaclty know when a subject really is censored (in example: a patient died between to follow-up points or a patient that decided to not present himself to follow-up). So the best "graphical" choice is to divide the space between to points in to N+1 segments (where N is the censored data between T1 and T2) and to plot a cross for each segments.

I noticed that the time of censoring is not plotted correctly. I could not fix it. Could you maybe help?

serves the purpose - thanks a lot!


inputparser; github link

fixed a bug into "input error handling" section

function for hazard rate computation was changed to avoid NaN in non linear fit.
Now is possible to choose how to plot censored data: if spreades along period or at period of observation.

Hazard rate computation added

Changes in description

improvement for censored data

error correction in confidence curve trimming

The function was adapted to be recalled by LOGRANK function (a function of mine). More vectorization.

help section change to correctly cite this file; median time computation was changed (in some cases there is not median time)

MATLAB Release Compatibility
Created with R2014b
Compatible with any release
Platform Compatibility
Windows macOS Linux

Inspired: MatSurv