plot.survfit
A plot of survival curves is produced, one curve for each strata.
The log=T
option does extra work to avoid log(0), and to try to create a
pleasing result. If there are zeros, they are plotted by default at
0.8 times the smallest nonzero value on the curve(s). Curves are plotted in the same order as they are listed by print
(which gives a 1 line summary of each).
This will be the order in which col
, lty
, etc are used.
Usage
# S3 method for survfit
plot(x, conf.int=, mark.time=FALSE,
mark=3, col=1, lty=1, lwd=1, cex=1, log=FALSE, xscale=1, yscale=1,
firstx=0, firsty=1, xmax, ymin=0, fun,
xlab="", ylab="", xaxs="S", conf.times, conf.cap=.005,
conf.offset=.012, …)
Arguments
 x

an object of class
survfit
, usually returned by thesurvfit
function.  conf.int
 determines whether confidence intervals will be plotted. The default is to do so if there is only 1 curve, i.e., no strata.
 mark.time

controls the labeling of the curves. If set to
FALSE
, no labeling is done. IfTRUE
, then curves are marked at each censoring time which is not also a death time. Ifmark.time
is a numeric vector, then curves are marked at the specified time points.  mark

vector of mark parameters, which will be used to label the curves.
The
lines
help file contains examples of the possible marks. The vector is reused cyclically if it is shorter than the number of curves. If it is present this impliesmark.time = TRUE
.  col
 a vector of integers specifying colors for each curve. The default value is 1.
 lty
 a vector of integers specifying line types for each curve. The default value is 1.
 lwd
 a vector of numeric values for line widths. The default value is 1.
 cex
 a numeric value specifying the size of the marks. This is not treated as a vector; all marks have the same size.
 log
 a logical value, if TRUE the y axis wll be on a log scale. Alternately, one of the standard character strings "x", "y", or "xy" can be given to specific logarithmic horizontal and/or vertical axes.
 yscale

a numeric value used to multiply the labels on the y axis.
A value of 100, for instance, would be used to give a percent scale.
Only the labels are
changed, not the actual plot coordinates, so that adding a curve with
"
lines(surv.exp(...))
", say, will perform as it did without theyscale
argument.  xscale

a numeric value used like
yscale
for labels on the x axis. A value of 365.25 will give labels in years instead of the original days.  firstx, firsty

the starting point for the survival curves. If either of these is set to
NA
the plot will start at the first time point of the curve. By default, the plot program obeys tradition by having the plot start at (0,0).If
start.time
argument is used insurvfit
,firstx
is set to that value.  xmax

the maximum horizontal plot coordinate. This can be used to shrink
the range of a plot. It shortens the curve before plotting it, so
that unlike using the
xlim
graphical parameter, warning messages about out of bounds points are not generated.  ymin

lower boundary for y values. Survival curves are most often drawn in the
range of 01, even if none of the curves approach zero.
The parameter is ignored if the
fun
argument is present, or if it has been set toNA
.  fun

an arbitrary function defining a transformation of the survival curve.
For example
fun=log
is an alternative way to draw a logsurvival curve (but with the axis labeled with log(S) values), andfun=sqrt
would generate a curve on square root scale. Four often used transformations can be specified with a character argument instead:"log"
is the same as using thelog=T
option,"event"
plots cumulative events (f(y) = 1y),"cumhaz"
plots the cumulative hazard function (f(y) = log(y)), and"cloglog"
creates a complimentary loglog survival plot (f(y) = log(log(y)) along with log scale for the xaxis).  xlab
 label given to the xaxis.
 ylab
 label given to the yaxis.
 xaxs

either
"S"
for a survival curve or a standard x axis style as listed inpar
. Survival curves are usually displayed with the curve touching the yaxis, but not touching the bounding box of the plot on the other 3 sides. Type"S"
accomplishes this by manipulating the plot range and then using the"i"
style internally.  conf.times
 optional vector of times at which to place a confidence bar on the curve(s). If present, these will be used instead of confidence bands.
 conf.cap
 width of the horizontal cap on top of the confidence bars; only used if conf.times is used. A value of 1 is the width of the plot region.
 conf.offset
 the offset for confidence bars, when there are multiple curves on the plot. A value of 1 is the width of the plot region. If this is a single number then each curve's bars are offset by this amount from the prior curve's bars, if it is a vector the values are used directly.
 …
 for future methods
Details
When the survfit
function creates a multistate survival curve
the resulting object also has class `survfitms'.
Competing risk curves are a common case. The only difference in
the plots is that multistate defaults to a curve that goes from lower
left to upper right (starting at 0), where survival curves by default
start at 1 and go down. All other options are identical. When the conf.times
argument is used, the confidence bars are
offset by conf.offset
units to avoid overlap.
The bar on each curve are the confidence interval for the time point
at which the bar is drawn, i.e., different time points for each curve.
If curves are steep at that point, the visual impact can sometimes
substantially differ for positive and negative values of
conf.offset
.
Value
a list with components x
and y
, containing the coordinates of the last point
on each of the curves (but not the confidence limits).
This may be useful for labeling.
Note
In prior versions the behavior of xscale
and
yscale
differed: the first changed the scale both for the plot
and for all subsequent actions such as adding a legend, whereas yscale
affected only the axis label. This was normalized in version 236.4,
and both parameters now only affect the labeling.
See Also
Examples
leukemia.surv < survfit(Surv(time, status) ~ x, data = aml)
plot(leukemia.surv, lty = 2:3)
legend(100, .9, c("Maintenance", "No Maintenance"), lty = 2:3)
title("KaplanMeier Curves\nfor AML Maintenance Study")
lsurv2 < survfit(Surv(time, status) ~ x, aml, type='fleming')
plot(lsurv2, lty=2:3, fun="cumhaz",
xlab="Months", ylab="Cumulative Hazard")