R: adds curved arrow between two points

curvedarrow {diagram} | R Documentation

## adds curved arrow between two points

### Description

Connects two points with an ellipsoid line and adds an arrowhead at a certain distance

### Usage

    curvedarrow(from, to, lwd = 2, lty = 1, lcol = "black",
                arr.col = lcol, arr.pos = 0.5, curve = 1, dr = 0.01,
                endhead = FALSE, segment = c(0, 1), ...)

### Arguments

`from` | coordinates (x,y) of the point *from* which to draw arrow.
`to` | coordinates (x,y) of the point *to* which to draw arrow.
`lwd` | line width.
`lty` | line type.
`lcol` | line color.
`arr.col` | arrowhead color.
`arr.pos` | relative position of arrowhead.
`curve` | relative size of curve (fraction of points distance) - see details.
`dr` | size of segments, in radians, to draw ellipse (decrease for smoother).
`endhead` | if `TRUE`: the arrow line stops at the arrowhead; default = `FALSE`.
`segment` | if not `c(0,1)`: then the arrow line will cover only part of the requested path, e.g. if segment = c(0.2,0.8), it will start 0.2 from `from` and till 0.8.
`...` | arguments passed to function `Arrows`.

### Details

A curved arrow is drawn between two points '(from, to)'

The position of the arrowhead, is set with `arr.pos`, a value between 0(start point) and 1(endpoint)

The line curvature is set with `curve` which expresses the ellipse radius as a fraction of the distance between the two points. For instance, `curve=0.5` will draw an ellepse with small radius half of a circle.

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

see `Arrowhead` from package shape for details on arrow head

### Value

`default` | coordinates (x,y) where arrowhead is drawn.

### Author(s)

Karline Soetaert <karline.soetaert@nioz.nl>

### See Also

`straightarrow`, `segmentarrow`, `bentarrow`, `selfarrow`, `treearrow`, `splitarrow`,

`arrows`: the comparable R function,

`Arrows`: more complicated arrow function from package shape.

### Examples

    openplotmat(main = "curvedarrow")

    pos <- coordinates(pos = 4, my = 0.2)
    text(pos, LETTERS[1:4], cex = 2)

    for (i in 1:3)
      curvedarrow(from = pos[1, ] + c(0,-0.05), to = pos[i+1, ] + c(0,-0.05),
                  curve = 0.5, arr.pos = 1)
    for (i in 1:3)
      curvedarrow(from = pos[1, ] + c(0, 0.05), to = pos[i+1, ] + c(0, 0.05),
                  curve = -0.25, arr.adj = 1, arr.pos = 0.5,
                  arr.type = "triangle", arr.col = "blue")

[Package diagram version 1.6.4 Index]