\HeaderA{rect}{Draw One or More Rectangles}{rect}
\keyword{aplot}{rect}
\begin{Description}\relax
\code{rect} draws a rectangle (or sequence of rectangles) with the
given coordinates, fill and border colors.
\end{Description}
\begin{Usage}
\begin{verbatim}
rect(xleft, ybottom, xright, ytop, density = NULL, angle = 45,
     col = NA, border = NULL, lty = par("lty"), lwd = par("lwd"),
     ...)
\end{verbatim}
\end{Usage}
\begin{Arguments}
\begin{ldescription}
\item[\code{xleft}] a vector (or scalar) of left x positions.
\item[\code{ybottom}] a vector (or scalar) of bottom y positions.
\item[\code{xright}] a vector (or scalar) of right x positions.
\item[\code{ytop}] a vector (or scalar) of top y positions.
\item[\code{density}] the density of shading lines, in lines per inch.
The default value of \code{NULL} means that no shading lines are drawn.
A zero value of \code{density} means no shading lines whereas
negative values (and \code{NA}) suppress shading (and so allow
color filling).
\item[\code{angle}] angle (in degrees) of the shading lines.
\item[\code{col}] color(s) to fill or shade the rectangle(s) with.
The default \code{NA} (or also \code{NULL}) means do not fill,
i.e., draw transparent rectangles, unless \code{density} is specified.
\item[\code{border}] color for rectangle border(s).  The default means
\code{par("fg")}.  Use \code{border = NA} to omit borders.
If there are shading
lines, \code{border = TRUE} means use the same colour for
the border as for the shading lines.
\item[\code{lty}] line type for borders and shading; defaults to \code{"solid"}.
\item[\code{lwd}] line width for borders and shading.
\item[\code{...}] graphical parameters such as \code{xpd}, \code{lend},
\code{ljoin} and \code{lmitre} can be given as
arguments.
\end{ldescription}
\end{Arguments}
\begin{Details}\relax
The positions supplied, i.e., \code{xleft, ...},
are relative to the current plotting region.  If the x-axis goes from
100 to 200 then \code{xleft} must be larger than 100 and \code{xright}
must be less than 200.

It is a primitive function used in \code{\LinkA{hist}{hist}},
\code{\LinkA{barplot}{barplot}}, \code{\LinkA{legend}{legend}}, etc.
\end{Details}
\begin{SeeAlso}\relax
\code{\LinkA{box}{box}} for the standard box around the plot;
\code{\LinkA{polygon}{polygon}} and \code{\LinkA{segments}{segments}} for flexible line
drawing.

\code{\LinkA{par}{par}} for how to specify colors.
\end{SeeAlso}
\begin{Examples}
\begin{ExampleCode}
require(grDevices)
## set up the plot region:
op <- par(bg = "thistle")
plot(c(100, 250), c(300, 450), type = "n", xlab="", ylab="",
     main = "2 x 11 rectangles; 'rect(100+i,300+i,  150+i,380+i)'")
i <- 4*(0:10)
## draw rectangles with bottom left (100, 300)+i
## and top right (150, 380)+i
rect(100+i, 300+i, 150+i, 380+i, col=rainbow(11, start=.7,end=.1))
rect(240-i, 320+i, 250-i, 410+i, col=heat.colors(11), lwd=i/5)
## Background alternating  ( transparent / "bg" ) :
j <- 10*(0:5)
rect(125+j, 360+j,   141+j, 405+j/2, col = c(NA,0),
     border = "gold", lwd = 2)
rect(125+j, 296+j/2, 141+j, 331+j/5, col = c(NA,"midnightblue"))
mtext("+  2 x 6 rect(*, col = c(NA,0)) and  col = c(NA,\"m..blue\"))")

## an example showing colouring and shading
plot(c(100, 200), c(300, 450), type= "n", xlab="", ylab="")
rect(100, 300, 125, 350) # transparent
rect(100, 400, 125, 450, col="green", border="blue") # coloured
rect(115, 375, 150, 425, col=par("bg"), border="transparent")
rect(150, 300, 175, 350, density=10, border="red")
rect(150, 400, 175, 450, density=30, col="blue",
     angle=-30, border="transparent")

legend(180, 450, legend=1:4, fill=c(NA, "green", par("fg"), "blue"),
       density=c(NA, NA, 10, 30), angle=c(NA, NA, 30, -30))

par(op)
\end{ExampleCode}
\end{Examples}

