blob: 1e8fffb2acf0f1bdecf1eada91d83ef8be831006 [file] [log] [blame]
% File src/library/grid/man/grid.function.Rd
% Part of the R package, https://www.R-project.org
% Copyright 1995-2007 R Core Team
% Distributed under GPL 2 or later
\name{grid.function}
\alias{grid.function}
\alias{functionGrob}
\alias{grid.abline}
\title{Draw a curve representing a function}
\description{
Draw a curve representing a function.
}
\usage{
grid.function(...)
functionGrob(f, n = 101, range = "x", units = "native",
name = NULL, gp=gpar(), vp = NULL)
grid.abline(intercept, slope, ...)
}
\arguments{
\item{f}{ A function that must take a single argument
and return a list with two numeric components named \code{x} and
\code{y}.}
\item{n}{ The number values that will be generated as input
to the function \code{f}.}
\item{range}{ Either \code{"x"}, \code{"y"}, or a numeric vector.
See the \sQuote{Details} section.}
\item{units}{A string indicating the units to use
for the \code{x} and \code{y} values generated by the function.}
\item{intercept}{ Numeric.}
\item{slope}{ Numeric. }
\item{\dots}{ Arguments passed to \code{grid.function()}}
\item{name}{ A character identifier. }
\item{gp}{An object of class \code{gpar}, typically the output
from a call to the function \code{gpar}. This is basically
a list of graphical parameter settings.}
\item{vp}{A Grid viewport object (or NULL).}
}
\details{
\code{n} values are generated and passed to the function \code{f}
and a series of lines are
drawn through the resulting \code{x} and \code{y} values.
The generation of the \code{n} values depends on the value of
\code{range}. In the default case, \code{dim} is
\code{"x"}, which means that a set
of \code{x} values are generated covering the range of the current
viewport scale in the x-dimension. If \code{dim} is \code{"y"}
then values are generated from the current y-scale instead.
If \code{range} is a numeric vector, then values are generated
from that range.
\code{grid.abline()} provides a simple front-end for a straight
line parameterized by \code{intercept} and \code{slope}.
}
\value{
A functiongrob grob.
}
\author{Paul Murrell}
\seealso{
\link{Grid},
\code{\link{viewport}}
}
\examples{
# abline
# NOTE: in ROOT viewport on screen, (0, 0) at top-left
# and "native" is pixels!
grid.function(function(x) list(x=x, y=0 + 1*x))
# a more "normal" viewport with default normalized "native" coords
grid.newpage()
pushViewport(viewport())
grid.function(function(x) list(x=x, y=0 + 1*x))
# slightly simpler
grid.newpage()
pushViewport(viewport())
grid.abline()
# sine curve
grid.newpage()
pushViewport(viewport(xscale=c(0, 2*pi), yscale=c(-1, 1)))
grid.function(function(x) list(x=x, y=sin(x)))
# constrained sine curve
grid.newpage()
pushViewport(viewport(xscale=c(0, 2*pi), yscale=c(-1, 1)))
grid.function(function(x) list(x=x, y=sin(x)),
range=0:1)
# inverse sine curve
grid.newpage()
pushViewport(viewport(xscale=c(-1, 1), yscale=c(0, 2*pi)))
grid.function(function(y) list(x=sin(y), y=y),
range="y")
# parametric function
grid.newpage()
pushViewport(viewport(xscale=c(-1, 1), yscale=c(-1, 1)))
grid.function(function(t) list(x=cos(t), y=sin(t)),
range=c(0, 9*pi/5))
# physical abline
grid.newpage()
grid.function(function(x) list(x=x, y=0 + 1*x),
units="in")
}
\keyword{dplot}