Arrows {shape} | R Documentation |
adds arrows with improved arrowhead to a plot
Description
adds one or more arrows to a plot; arrowhead shape is either curved, a triangle, a circle or simple
Usage
Arrows(x0, y0, x1, y1, code = 2, arr.length = 0.4,
arr.width = arr.length/2, arr.adj = 0.5, arr.type = "curved",
segment = TRUE, col = "black", lcol = col, lty = 1, arr.col = lcol,
lwd = 1, arr.lwd = lwd, ...)
Arguments
x0 |
x-coordinates of points *from* which to draw arrows; either one value or a vector. |
y0 |
y-coordinates of points *from* which to draw arrows; either one value or a vector. |
x1 |
x-coordinates of points *to* which to draw arrows; either one value or a vector. |
y1 |
y-coordinates of points *to* which to draw arrows; either one value or a vector. |
code |
integer code determining kind of arrows to draw. |
arr.length |
approximate length of arrowhead, in cm; either one value or a vector. |
arr.width |
approximate width of arrowhead, in cm; either one value or a vector. |
arr.adj |
0,0.5,1 specifying the adjustment of the arrowhead. |
arr.type |
type of arrowhead to draw, one of "none", "simple", "curved", "triangle", "circle", "ellipse" or "T". |
segment |
logical specifying whether or not to draw line segments. |
col |
general line color specification; one value or a vector. |
lcol |
line color specifications; either one value or a vector.
ignored when arr.type = |
lty |
line type specifications; either one value or a vector. |
arr.col |
color of arrowhead; either one value or a vector. |
lwd |
general line width specification. The default value changed to 1 from version 1.4 (was 2) |
arr.lwd |
line width of arrowhead. |
... |
arguments passed to lines, segments or Arrowhead function. |
Details
x0
, y0
, x1
, y1
, arr.length
,
arr.width
, arr.adj
, lcol
, lty
and
arr.col
can be a vector, of the same length.
For each 'i', an arrow is drawn between the point '(x0[i], y0[i])' and the point '(x1[i],y1[i])'.
If
code
=1 an arrowhead is drawn at '(x0[i],y0[i])'if
code
=2 an arrowhead is drawn at '(x1[i],y1[i])'.If
code
=3 an arrowhead is drawn at both ends of the arrowunless
arr.length
= 0, when no head is drawn.
If
arr.adj
= 0.5 then the centre of the arrowhead is at the point at which it is drawn.-
arr.adj
= 1 causes the tip of the arrowhead to touch the point. -
arr.adj
= 2 causes the base of the arrowhead to touch the point.
The type of the arrowhead is set with arr.type
which can take
the values:
"simple" : uses comparable R function arrows
"triangle": uses filled triangle
"curved" : draws arrowhead with curved edges
"circle" : draws circular head
"ellipse" : draws ellepsoid head
"T" : draws T-shaped (blunt) head
Author(s)
Karline Soetaert <karline.soetaert@nioz.nl>
See Also
arrows
the comparable R function
Examples
xlim <- c(-5 , 5)
ylim <- c(-10, 10)
plot(0, type = "n", xlim = xlim, ylim = ylim,
main = "Arrows, type = 'curved'")
x0 <- runif(100, xlim[1], xlim[2])
y0 <- runif(100, ylim[1], ylim[2])
x1 <- x0+runif(100, -1, 1)
y1 <- y0+runif(100, -1, 1)
Arrows(x0, y0, x1, y1, arr.length = runif(100), code = 2,
arr.type = "curved", arr.col = 1:100, lcol = 1:100)
plot(0, type = "n", xlim = xlim, ylim = ylim,
main = "Arrows, type = 'circle'")
x0 <- runif(100, xlim[1], xlim[2])
y0 <- runif(100, ylim[1], ylim[2])
x1 <- x0 + runif(100, -1, 1)
y1 <- y0 + runif(100, -1, 1)
Arrows(x0, y0, x1, y1, arr.length = 0.2, code = 3,
arr.type = "circle", arr.col = "grey")
plot(0, type = "n", xlim = xlim, ylim = ylim,
main = "Arrows, type = 'ellipse'")
Arrows(x0, y0, x1, y1, arr.length = 0.2, arr.width = 0.5,
code = 3, arr.type = "ellipse", arr.col = "grey")
curve(expr = sin(x), 0, 2*pi+0.25, main = "Arrows")
x <- seq(0, 2*pi, length.out = 10)
xd <- x + 0.025
Arrows(x, sin(x), xd, sin(xd), type = "triangle",
arr.length = 0.5, segment = FALSE)
xx <- seq(0, 10*pi, length.out = 1000)
plot(sin(xx)*xx, cos(xx)*xx, type = "l", axes = FALSE,
xlab = "", ylab = "", main = "Arrows, type = 'curved'")
x <- seq(0, 10*pi, length.out = 20)
x1 <- sin(x)*x
y1 <- cos(x)*x
xd <- x+0.01
x2 <- sin(xd)*xd
y2 <- cos(xd)*xd
Arrows(x1, y1, x2, y2, arr.type = "curved", arr.length = 0.4,
segment = FALSE, code = 1, arr.adj = 0.5 )
plot(sin(xx)*xx, cos(xx)*xx, type = "l", axes = FALSE,
xlab = "", ylab = "", main = "Arrows, type = 'T'")
Arrows(x1, y1, x2, y2, arr.type = "T", arr.length = 0.4,
code = 1, arr.lwd = 2)
# arguments passed to polygon:
xlim <- c(-5 , 5)
ylim <- c(-10, 10)
plot(0, type = "n", xlim = xlim, ylim = ylim,
main = "Arrows, type = 'curved'")
x0 <- runif(100, xlim[1]-1, xlim[2]+0.5) # exceeds the x-range
y0 <- runif(100, ylim[1], ylim[2])
x1 <- x0+runif(100, -1, 1)
y1 <- y0+runif(100, -1, 1)
Arrows(x0, y0, x1, y1, arr.length = runif(100), code = 2,
arr.type = "curved", arr.col = 1:100, lcol = 1:100, xpd = TRUE)