Learn R Programming

stats (version 3.4.0)

plot.stepfun: Plot Step Functions

Description

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

Usage

# S3 method for stepfun
plot(x, xval, xlim, ylim = range(c(y, Fn.kn)),
     xlab = "x", ylab = "f(x)", main = NULL,
     add = FALSE, verticals = TRUE, do.points = (n < 1000),
     pch = par("pch"), col = par("col"),
     col.points = col, cex.points = par("cex"),
     col.hor = col, col.vert = col,
     lty = par("lty"), lwd = par("lwd"), …)

# S3 method for 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
limits for the plot region: see plot.window. Both have sensible defaults if omitted.
xlab, ylab
labels for 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. Default is true, for sample size \(< 1000\).
pch
character; point character if do.points.
col
default color of all points and lines.
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[].

See Also

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

Examples

Run this code
require(graphics)

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.hor = "bisque")
plot(sfun.2);plot(sfun.2, xval = tt, add = TRUE, col = "orange") # all colors
plot(sfun1);lines(sfun1, xval = tt, col.hor = "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 = i)
legend(2.5, 1.9, paste("f =", c(0, 0.2, 1)), col = 1:3, lty = 1, y.intersp = 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")

Run the code above in your browser using DataLab