plot.stepfun              package:stats              R Documentation

Plot Step Functions

Description:

     Method of the generic 'plot' for 'stepfun' objects and utility for
     plotting piecewise constant functions.

Usage:

     ## S3 method for class 'stepfun':
     plot(x, xval, xlim, ylim,
          xlab = "x", ylab = "f(x)", main = NULL,
          add = FALSE, verticals = TRUE, do.points = TRUE,
          pch = par("pch"), col.points=par("col"), cex.points=par("cex"),
          col.hor = par("col"), col.vert= par("col"),
          lty = par("lty"), lwd = par("lwd"), ...)

     ## S3 method for class 'stepfun':
     lines(x, ...)

Arguments:

       x: an R object inheriting from '"stepfun"'.

    xval: numeric vector of abscissa values at which to evaluate 'x'. 
          Defaults to 'knots(x)' restricted to 'xlim'.

xlim,ylim: numeric(2) each; range of 'x' or 'y' values to use.  Both
          have sensible defaults.

xlab,ylab: labels of x and y axis.

    main: main title.

     add: logical; if 'TRUE' only _add_ to an existing plot.

verticals: logical;  if 'TRUE', draw vertical lines at steps.

do.points: logical;  if 'true', also draw points at the ('xlim'
          restricted) knot locations.

     pch: character; point character if 'do.points'.

col.points: character or integer code; color of points if 'do.points'.

cex.points: numeric; character expansion factor if 'do.points'.

 col.hor: color of horizontal lines.

col.vert: color of vertical lines.

lty, lwd: line type and thickness for all lines.

     ...: further arguments of 'plot(.)', or if'(add)' 'segments(.)'.

Value:

     A list with two components 

       t: abscissa (x) values, including the two outermost ones.

       y: y values 'in between' the 't[]'.

Author(s):

     Martin Maechler maechler@stat.math.ethz.ch, 1990, 1993; ported to
     R, 1997.

See Also:

     'ecdf' for empirical distribution functions as special step
     functions, 'approxfun' and 'splinefun'.

Examples:

     y0 <- c(1,2,4,3)
     sfun0  <- stepfun(1:3, y0, f = 0)
     sfun.2 <- stepfun(1:3, y0, f = .2)
     sfun1  <- stepfun(1:3, y0, right = TRUE)

     tt <- seq(0,3, by=0.1)
     op <- par(mfrow=c(2,2))
     plot(sfun0); plot(sfun0, xval=tt, add=TRUE, col.h="bisque")
     plot(sfun.2);plot(sfun.2,xval=tt, add=TRUE, col.h="orange")
     plot(sfun1);lines(sfun1, xval=tt, col.h="coral")
     ##-- This is  revealing :
     plot(sfun0, verticals= FALSE,
          main = "stepfun(x, y0, f=f)  for f = 0, .2, 1")
     for(i in 1:3)
       lines(list(sfun0,sfun.2,stepfun(1:3,y0,f = 1))[[i]], col.h=i, col.v=i)
     legend(2.5, 1.9, paste("f =", c(0,0.2,1)), col=1:3, lty=1, y.inter=1); par(op)

     # Extend and/or restrict 'viewport':
     plot(sfun0, xlim = c(0,5), ylim = c(0, 3.5),
          main = "plot(stepfun(*), xlim= . , ylim = .)")

     ##-- this works too (automatic call to  ecdf(.)):
     plot.stepfun(rt(50, df=3), col.vert = "gray20")

