R: Polygon Drawing

polygon {graphics} | R Documentation

## Polygon Drawing

### Description

`polygon` draws the polygons whose vertices are given in `x` and `y`.

### Usage

    polygon(x, y = NULL, density = NULL, angle = 45,
            border = NULL, col = NA, lty = par("lty"), ...)

### Arguments

`x,y` | vectors containing the coordinates of the vertices of the polygon.
`density` | the density of shading lines, in lines per inch. The default value of `NULL` means that no shading lines are drawn. A zero value of `density` means no shading nor filling whereas negative values (and `NA`) suppress shading (and so allow color filling).
`angle` | the slope of shading lines, given as an angle in degrees (counter-clockwise).
`col` | the color for filling the polygon. The default, `NA`, is to leave polygons unfilled, unless `density` is specified. (For back-compatibility, `NULL` is equivalent to `NA`.) If `density` is specified with a positive value this gives the color of the shading lines.
`border` | the color to draw the border. The default, `NULL`, means to use `par("fg")`. Use `border = NA` to omit borders. For compatibility with S, `border` can also be logical, in which case `FALSE` is equivalent to `NA` (borders omitted) and `TRUE` is equivalent to `NULL` (use the foreground colour),
`lty` | the line type to be used, as in `par`.
`...` | graphical parameters such as `xpd`, `lend`, `ljoin` and `lmitre` can be given as arguments.

### Details

The coordinates can be passed in a plotting structure (a list with `x` and `y` components), a two-column matrix, .... See `xy.coords`.

It is assumed that the polygon is to be closed by joining the last point to the first point.

The coordinates can contain missing values. The behaviour is similar to that of `lines`, except that instead of breaking a line into several lines, `NA` values break the polygon into several complete polygons (including closing the last point to the first point). See the examples below.

When multiple polygons are produced, the values of `density`, `angle`, `col`, `border`, and `lty` are recycled in the usual manner.

### Bugs

The present shading algorithm can produce incorrect results for self-intersecting polygons.

### Author(s)

The code implementing polygon shading was donated by Kevin Buhr buhr@stat.wisc.edu.

### References

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

Murrell, P. (2005) R Graphics. Chapman & Hall/CRC Press.

### See Also

`segments` for even more flexibility, `lines`, `rect`, `box`, `abline`.

`par` for how to specify colors.

### Examples

    x <- c(1:9,8:1)
    y <- c(1,2*(5:3),2,-1,17,9,8,2:9)
    op <- par(mfcol=c(3,1))
    for(xpd in c(FALSE,TRUE,NA)) {
      plot(1:10, main = paste("xpd =", xpd))
      box("figure", col = "pink", lwd=3)
      polygon(x,y, xpd=xpd, col="orange", lty=2, lwd=2, border="red")
    }
    par(op)

    n <- 100
    xx <- c(0:n, n:0)
    yy <- c(c(0,cumsum(stats::rnorm(n))), rev(c(0,cumsum(stats::rnorm(n)))))
    plot   (xx, yy, type="n", xlab="Time", ylab="Distance")
    polygon(xx, yy, col="gray", border = "red")
    title("Distance Between Brownian Motions")

    # Multiple polygons from NA values
    # and recycling of col, border, and lty
    op <- par(mfrow=c(2,1))
    plot(c(1,9), 1:2, type="n")
    polygon(1:9, c(2,1,2,1,1,2,1,2,1),
            col=c("red", "blue"),
            border=c("green", "yellow"),
            lwd=3, lty=c("dashed", "solid"))
    plot(c(1,9), 1:2, type="n")
    polygon(1:9, c(2,1,2,1,NA,2,1,2,1),
            col=c("red", "blue"),
            border=c("green", "yellow"),
            lwd=3, lty=c("dashed", "solid"))
    par(op)

    # Line-shaded polygons
    plot(c(1,9), 1:2, type="n")
    polygon(1:9, c(2,1,2,1,NA,2,1,2,1),
            density=c(10, 20), angle=c(-45, 45))

[Package graphics version 2.6.2 Index]