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, lcol="black", lty=1, arr.col=lcol, ...)

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 "simple","curved","triangle","circle"
segment logical specifying whether or not to draw line segments
lcol line color specifications; either one value or a vector
lty line type specifications; either one value or a vector
arr.col color of arrowhead; either one value or a vector
... arguments passed to lines or segments 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 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

    Author(s)

    Karline Soetaert <k.soetaert@nioo.knaw.nl>

    See Also

    arrows the comparable R function
    Arrowhead

    Examples

    xlim <- c(-5 ,5)
      ylim <- c(-10,10)
      plot(0,type="n",xlim=xlim,ylim=ylim,main="Arrows")
      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")
      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")
      
      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")
      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 )

    [Package shape version 1.1 Index]