Draw a curve representing a function.

1 2 3 4 5 | ```
grid.function(...)
functionGrob(f, n = 101, range = "x", units = "native",
name = NULL, gp=gpar(), vp = NULL)
grid.abline(intercept, slope, ...)
``` |

`f` |
A function that must take a single argument
and return a list with two numeric components named |

`n` |
The number values that will be generated as input
to the function |

`range` |
Either |

`units` |
A string indicating the units to use
for the |

`intercept` |
Numeric. |

`slope` |
Numeric. |

`...` |
Arguments passed to |

`name` |
A character identifier. |

`gp` |
An object of class |

`vp` |
A Grid viewport object (or NULL). |

`n`

values are generated and passed to the function `f`

and a series of lines are
drawn through the resulting `x`

and `y`

values.

The generation of the `n`

values depends on the value of
`range`

. In the default case, `dim`

is
`"x"`

, which means that a set
of `x`

values are generated covering the range of the current
viewport scale in the x-dimension. If `dim`

is `"y"`

then values are generated from the current y-scale instead.
If `range`

is a numeric vector, then values are generated
from that range.

`grid.abline()`

provides a simple front-end for a straight
line parameterized by `intercept`

and `slope`

.

A functiongrob grob.

Paul Murrell

Grid,
`viewport`

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | ```
# 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")
``` |

Questions? Problems? Suggestions? Tweet to @rdrrHQ or email at ian@mutexlabs.com.

All documentation is copyright its authors; we didn't write any of that.