grid.arrows {grid} | R Documentation

## Draw Arrows

### Description

Functions to create and draw arrows at either end of a line, or at either end of a line.to, lines, or segments grob.

### Usage

    grid.arrows(x = c(0.25, 0.75), y = 0.5, default.units = "npc",
                grob = NULL,
                angle = 30, length = unit(0.25, "inches"),
                ends = "last", type = "open", name = NULL,
                gp = gpar(), draw = TRUE, vp = NULL)
    arrowsGrob(x = c(0.25, 0.75), y = 0.5, default.units = "npc",
                grob = NULL,
                angle = 30, length = unit(0.25, "inches"),
                ends = "last", type = "open", name = NULL,
                gp = gpar(), vp = NULL)

### Arguments

`x` | A numeric vector or unit object specifying x-values.
`y` | A numeric vector or unit object specifying y-values.
`default.units` | A string indicating the default units to use if `x` or `y` are only given as numeric vectors.
`grob` | A grob to add arrows to; currently can only be a line.to, lines, or segments grob.
`angle` | A numeric specifying (half) the width of the arrow head (in degrees).
`length` | A unit object specifying the length of the arrow head.
`ends` | One of `"first"`, `"last"`, or `"both"`, indicating which end of the line to add arrow heads.
`type` | Either `"open"` or `"closed"` to indicate the type of arrow head.
`name` | A character identifier.
`gp` | An object of class `gpar`, typically the output from a call to the function `gpar`. This is basically a list of graphical parameter settings.
`draw` | A logical value indicating whether graphics output should be produced.
`vp` | A Grid viewport object (or NULL).

### Details

Both functions create an arrows grob (a graphical object describing arrows), but only `grid.arrows()` draws the arrows (and then only if `draw` is `TRUE`).

If the grob argument is specified, this overrides any x and/or y arguments.

### Value

An arrows grob. `grid.arrows()` returns the value invisibly.

### Author(s)

Paul Murrell

### See Also

Grid, `viewport`, `grid.line.to`, `grid.lines`, `grid.segments`

### Examples

    pushViewport(viewport(layout=grid.layout(2, 4)))
    pushViewport(viewport(layout.pos.col=1,
                           layout.pos.row=1))
    grid.rect(gp=gpar(col="grey"))
    grid.arrows()
    popViewport()
    pushViewport(viewport(layout.pos.col=2,
                           layout.pos.row=1))
    grid.rect(gp=gpar(col="grey"))
    grid.arrows(angle=15, type="closed")
    popViewport()
    pushViewport(viewport(layout.pos.col=3,
                           layout.pos.row=1))
    grid.rect(gp=gpar(col="grey"))
    grid.arrows(angle=5, length=unit(0.1, "npc"),
                type="closed", gp=gpar(fill="white"))
    popViewport()
    pushViewport(viewport(layout.pos.col=4,
                           layout.pos.row=1))
    grid.rect(gp=gpar(col="grey"))
    grid.arrows(x=unit(0:80/100, "npc"),
                y=unit(1 - (0:80/100)^2, "npc"))
    popViewport()
    pushViewport(viewport(layout.pos.col=1,
                           layout.pos.row=2))
    grid.rect(gp=gpar(col="grey"))
    grid.arrows(ends="both")
    popViewport()
    pushViewport(viewport(layout.pos.col=2,
                           layout.pos.row=2))
    grid.rect(gp=gpar(col="grey"))
    # Recycling arguments
    grid.arrows(x=unit(1:10/11, "npc"), y=unit(1:3/4, "npc"))
    popViewport()
    pushViewport(viewport(layout.pos.col=3,
                           layout.pos.row=2))
    grid.rect(gp=gpar(col="grey"))
    # Drawing arrows on a segments grob
    gs <- segmentsGrob(x0=unit(1:4/5, "npc"),
                       x1=unit(1:4/5, "npc"))
    grid.arrows(grob=gs, length=unit(0.1, "npc"),
                type="closed", gp=gpar(fill="white"))
    popViewport()
    pushViewport(viewport(layout.pos.col=4,
                           layout.pos.row=2))
    grid.rect(gp=gpar(col="grey"))
    # Arrows on a lines grob
    # Name these because going to grid.edit them later
    gl <- linesGrob(name="curve", x=unit(0:80/100, "npc"),
                    y=unit((0:80/100)^2, "npc"))
    grid.arrows(name="arrowOnLine", grob=gl, angle=15, type="closed",
                gp=gpar(fill="black"))
    popViewport()
    pushViewport(viewport(layout.pos.col=1,
                           layout.pos.row=2))
    grid.move.to(x=0.5, y=0.8)
    popViewport()
    pushViewport(viewport(layout.pos.col=4,
                           layout.pos.row=1))
    # Arrows on a line.to grob
    glt <- lineToGrob(x=0.5, y=0.2, gp=gpar(lwd=3))
    grid.arrows(grob=glt, ends="first", gp=gpar(lwd=3))
    popViewport(2)
    grid.edit(gPath("arrowOnLine", "curve"), y=unit((0:80/100)^3, "npc"))

[Package Contents]