# polygon

##### Polygon Drawing

`polygon`

draws the polygons whose vertices are
given in `x`

and `y`

.

- Keywords
- aplot

##### Usage

```
polygon(x, y = NULL, density = NULL, angle = 45,
border = NULL, col = NA, lty = par("lty"),
…, fillOddEven = FALSE)
```

##### 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.- fillOddEven
logical controlling the polygon shading mode: see below for details. Default

`FALSE`

.

##### 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.

Shading of polygons is only implemented for linear plots: if either axis is on log scale then shading is omitted, with a warning.

##### Bugs

Self-intersecting polygons may be filled using either the
“odd-even” or “non-zero” rule. These fill a region if
the polygon border encircles it an odd or non-zero number of times,
respectively. Shading lines are handled internally by R according
to the `fillOddEven`

argument, but device-based solid fills
depend on the graphics device. The `windows`

, `pdf`

and `postscript`

devices have their own `fillOddEven`

argument to control this.

##### 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

`library(graphics)`

```
# NOT RUN {
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))
# }
```

*Documentation reproduced from package graphics, version 3.6.2, License: Part of R 3.6.2*