magcurve | R Documentation |
Draws a curve corresponding to a function over the interval [from, to]
using magplot
. curve
can plot also an expression in the variable xname
, default ‘x’. This is almost a direct port of curve
, with use of magplot
rather than plot
.
magcurve(expr, from = NULL, to = NULL, n = 101, add = FALSE,
type = "l", xname = "x", xlab = xname, ylab = NULL,
log = NULL, xlim = NULL, ...)
expr |
The name of a function, or a call or an
expression written as a function of |
x |
a ‘vectorizing’ numeric R function. |
from , to |
the range over which the function will be plotted. |
n |
integer; the number of x values at which to evaluate. |
add |
logical; if |
xlim |
|
type |
magplot type: see |
xname |
character string giving the name to be used for the x axis. |
xlab , ylab , log , ... |
labels and graphical parameters
can also be specified as arguments. See ‘Details’ for the
interpretation of the default for For the |
The function or expression expr
(for magcurve
) or function
x
(for magplot
) is evaluated at n
points equally
spaced over the range [from, to]
. The points determined in
this way are then plotted.
If either from
or to
is NULL
, it defaults to the
corresponding element of xlim
if that is not NULL
.
What happens when neither from
/to
nor xlim
specifies both x-limits is a complex story. For
magplot(<function>)
and for magcurve(add = FALSE)
the defaults
are (0, 1)
. For magcurve(add = NA)
and magcurve(add =
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
linear. For 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.
For expensive-to-compute expr
essions, you should use smarter tools.
The way magcurve
handles 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 xname
(using
all.vars
): anything else is an error. Then expr
is evaluated in an environment which supplies a vector of name given
by xname
of length n
, and should evaluate to an object
of length n
. Note that this means that magcurve(x, ...)
is
taken as a request to plot a function named x
(and it is used
as such in the function
method for magplot
).
A list with components x
and 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 magcurve
.
curve
, magplot
magcurve(sin, -2*pi, 2*pi, xname = "t")
magcurve(tan, xname = "t", add = NA,
main = "magcurve(tan) --> same x-scale as previous plot")
op <- par(mfrow = c(2, 2))
magcurve(x^3 - 3*x, -2, 2, ylab='y')
magcurve(x^2 - 2, add = TRUE, col = "violet")
## simple and advanced versions, quite similar:
magcurve(cos, xlim = c(-pi, 3*pi), n = 1001, col = "blue", add = TRUE)
chippy <- function(x) sin(cos(x)*exp(-x/2))
magcurve(chippy, -8, 7, n = 2001)
for(ll in c("", "x", "y", "xy"))
magcurve(log(1+x), 1, 100, log = ll,
sub = paste("log= '", ll, "'", sep = ""))
par(op)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.