% 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}