grid.curve {grid} | R Documentation |
Draw a Curve Between Locations
Description
These functions create and draw a curve from one location to another.
Usage
grid.curve(...)
curveGrob(x1, y1, x2, y2, default.units = "npc",
curvature = 1, angle = 90, ncp = 1, shape = 0.5,
square = TRUE, squareShape = 1,
inflect = FALSE, arrow = NULL, open = TRUE,
debug = FALSE,
name = NULL, gp = gpar(), vp = NULL)
arcCurvature(theta)
Arguments
x1 |
A numeric vector or unit object specifying the x-location of the start point. |
y1 |
A numeric vector or unit object specifying the y-location of the start point. |
x2 |
A numeric vector or unit object specifying the x-location of the end point. |
y2 |
A numeric vector or unit object specifying the y-location of the end point. |
default.units |
A string indicating the default units to use
if |
curvature |
A numeric value giving the amount of curvature. Negative values produce left-hand curves, positive values produce right-hand curves, and zero produces a straight line. |
angle |
A numeric value between 0 and 180, giving an amount to skew the control points of the curve. Values less than 90 skew the curve towards the start point and values greater than 90 skew the curve towards the end point. |
ncp |
The number of control points used to draw the curve. More control points creates a smoother curve. |
shape |
A numeric vector of values between -1 and 1, which
control the shape of the curve relative to its control points.
See |
square |
A logical value that controls whether control
points for the curve are created city-block fashion or
obliquely. When |
squareShape |
A |
inflect |
A logical value specifying whether the curve should be cut in half and inverted (see Examples below). |
arrow |
A list describing arrow heads to place at either end
of the curve, as produced by the |
open |
A logical value indicating whether to close the curve (connect the start and end points). |
debug |
A logical value indicating whether debugging information should be drawn. |
name |
A character identifier. |
gp |
An object of class |
vp |
A Grid viewport object (or NULL). |
... |
Arguments to be passed to |
theta |
An angle (in degrees). |
Details
Both functions create a curve grob (a graphical object describing an
curve), but only grid.curve
draws the curve.
The arcCurvature
function can be used to calculate a
curvature
such that control points are generated on
an arc corresponding to angle theta
. This is typically
used in conjunction with a large ncp
to produce a curve
corresponding to the desired arc.
Value
A grob object.
See Also
Grid,
viewport
,
grid.xspline
,
arrow
Examples
curveTest <- function(i, j, ...) {
pushViewport(viewport(layout.pos.col=j, layout.pos.row=i))
do.call("grid.curve", c(list(x1=.25, y1=.25, x2=.75, y2=.75), list(...)))
grid.text(sub("list\\((.*)\\)", "\\1",
deparse(substitute(list(...)))),
y=unit(1, "npc"))
popViewport()
}
# grid.newpage()
pushViewport(plotViewport(c(0, 0, 1, 0),
layout=grid.layout(2, 1, heights=c(2, 1))))
pushViewport(viewport(layout.pos.row=1,
layout=grid.layout(3, 3, respect=TRUE)))
curveTest(1, 1)
curveTest(1, 2, inflect=TRUE)
curveTest(1, 3, angle=135)
curveTest(2, 1, arrow=arrow())
curveTest(2, 2, ncp=8)
curveTest(2, 3, shape=0)
curveTest(3, 1, curvature=-1)
curveTest(3, 2, square=FALSE)
curveTest(3, 3, debug=TRUE)
popViewport()
pushViewport(viewport(layout.pos.row=2,
layout=grid.layout(3, 3)))
curveTest(1, 1)
curveTest(1, 2, inflect=TRUE)
curveTest(1, 3, angle=135)
curveTest(2, 1, arrow=arrow())
curveTest(2, 2, ncp=8)
curveTest(2, 3, shape=0)
curveTest(3, 1, curvature=-1)
curveTest(3, 2, square=FALSE)
curveTest(3, 3, debug=TRUE)
popViewport(2)