adds arrows with improved arrowhead to a plot
adds one or more arrows to a plot; arrowhead shape is either curved, a triangle, a circle or simple
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, ...)
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. |
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 arrow
unless 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
Karline Soetaert <karline.soetaert@nioz.nl>
arrows
the comparable R function
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)
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.