R: Add Arrows to a Plot

arrows {graphics} | R Documentation

## Add Arrows to a Plot

### Description

Draw arrows between pairs of points.

### Usage

    arrows(x0, y0, x1 = x0, y1 = y0, length = 0.25, angle = 30,
           code = 2, col = par("fg"), lty = par("lty"),
           lwd = par("lwd"), ...)

### Arguments

`x0, y0` | coordinates of points from which to draw.
`x1, y1` | coordinates of points to which to draw. At least one must the supplied
`length` | length of the edges of the arrow head (in inches).
`angle` | angle from the shaft of the arrow to the edge of the arrow head.
`code` | integer code, determining kind of arrows to be drawn.
`col, lty, lwd` | graphical parameters, possible vectors. `NA` values in `col` cause the arrow to be omitted.
`...` | graphical parameters such as `xpd` and the line characteristics `lend`, `ljoin` and `lmitre`: see `par`.

### Details

For each `i`, an arrow is drawn between the point `(x0[i], y0[i])` and the point `(x1[i], y1[i])`. The coordinate vectors will be recycled to the length of the longest.

If `code = 1` an arrowhead is drawn at `(x0[i], y0[i])` and if `code = 2` an arrowhead is drawn at `(x1[i], y1[i])`. If `code = 3` a head is drawn at both ends of the arrow. Unless `length = 0`, when no head is drawn.

The graphical parameters `col`, `lty` and `lwd` can be vectors of length greater than one and will be recycled if necessary.

The direction of a zero-length arrow is indeterminate, and hence so is the direction of the arrowheads. To allow for rounding error, arrowheads are omitted (with a warning) on any arrow of length less than 1/1000 inch.

### Note

The first four arguments in the comparable S function are named `x1, y1, x2, y2`.

### References

Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.

### See Also

`segments` to draw segments.

### Examples

    x <- stats::runif(12); y <- stats::rnorm(12)
    i <- order(x, y); x <- x[i]; y <- y[i]
    plot(x,y, main = "arrows(.) and segments(.)")
    ## draw arrows from point to point :
    s <- seq(length(x)-1)  # one shorter than data
    arrows(x[s], y[s], x[s+1], y[s+1], col = 1:3)
    s <- s[-length(s)]
    segments(x[s], y[s], x[s+2], y[s+2], col = "pink")

[Package graphics version 4.0.5 Index]