Draws a curve corresponding to a function over the interval
curve can plot also an expression in the variable
xname, default x.
1 2 3 4 5 6
The name of a function, or a call or an
expression written as a function of
a ‘vectorizing’ numeric R function.
the range over which the function will be plotted.
integer; the number of x values at which to evaluate.
plot type: see
character string giving the name to be used for the x axis.
labels and graphical parameters
can also be specified as arguments. See ‘Details’ for the
interpretation of the default for
The function or expression
curve) or function
plot) is evaluated at
n points equally
spaced over the range
[from, to]. The points determined in
this way are then plotted.
NULL, it defaults to the
corresponding element of
xlim if that is not
What happens when neither
specifies both x-limits is a complex story. For
plot(<function>) and for
curve(add = FALSE) the defaults
are (0, 1). For
curve(add = NA) and
TRUE) the defaults are taken from the x-limits used for the previous
plot. (This differs from versions of R prior to 2.14.0.)
The value of
log is used both to specify the plot axes (unless
add = TRUE) and how ‘equally spaced’ is interpreted: if
the x component indicates log-scaling, the points at which the
expression or function is plotted are equally spaced on log scale.
The default value of
log is taken from the current plot when
add = TRUE, whereas if
add = NA the x component is taken
from the existing plot (if any) and the y component defaults to
add = FALSE the default is
This used to be a quick hack which now seems to serve a useful purpose, but can give bad results for functions which are not smooth.
expressions, you should use smarter tools.
expr has caused confusion. It
first looks to see if
expr is a name (also known as a
symbol), in which case it is taken to be the name of a function, and
expr is replaced by a call to
expr with a single
argument with name given by
xname. Otherwise it checks that
expr is either a call or an expression, and that
it contains a reference to the variable given by
all.vars): anything else is an error. Then
is evaluated in an environment which supplies a vector of name given
xname of length
n, and should evaluate to an object
n. Note that this means that
curve(x, ...) is
taken as a request to plot a function named
x (and it is used
as such in the
function method for
plot method can be called directly as
A list with components
y of the points that were
drawn is returned invisibly.
For historical reasons,
add is allowed as an argument to the
"function" method of
plot, but its behaviour may surprise
you. It is recommended to use
add only with
splinefun for spline interpolation,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
plot(qnorm) # default range c(0, 1) is appropriate here, # but end values are -/+Inf and so are omitted. plot(qlogis, main = "The Inverse Logit : qlogis()") abline(h = 0, v = 0:2/2, lty = 3, col = "gray") curve(sin, -2*pi, 2*pi, xname = "t") curve(tan, xname = "t", add = NA, main = "curve(tan) --> same x-scale as previous plot") op <- par(mfrow = c(2, 2)) curve(x^3 - 3*x, -2, 2) curve(x^2 - 2, add = TRUE, col = "violet") ## simple and advanced versions, quite similar: plot(cos, -pi, 3*pi) curve(cos, xlim = c(-pi, 3*pi), n = 1001, col = "blue", add = TRUE) chippy <- function(x) sin(cos(x)*exp(-x/2)) curve(chippy, -8, 7, n = 2001) plot (chippy, -8, -5) for(ll in c("", "x", "y", "xy")) curve(log(1+x), 1, 100, log = ll, sub = paste0("log = '", ll, "'")) par(op)