polygon {graphics} | R Documentation |
polygon
draws the polygons whose vertices are
given in x
and y
.
polygon(x, y = NULL, density = NULL, angle = 45, border = NULL, col = NA, lty = par("lty"), ..., fillOddEven = FALSE)
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, |
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 fill mode: see
below for details. Default FALSE . |
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.
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
pdf
and postscript
devices
have their own fillOddEven
argument to control this.
The code implementing polygon shading was donated by Kevin Buhr buhr@stat.wisc.edu.
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.
segments
for even more flexibility, lines
,
rect
, box
, abline
.
par
for how to specify colors.
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))