# contour

##### Display Contours

Create a contour plot, or add contour lines to an existing plot.

##### Usage

`contour(x, …)`# S3 method for default
contour(x = seq(0, 1, length.out = nrow(z)),
y = seq(0, 1, length.out = ncol(z)),
z,
nlevels = 10, levels = pretty(zlim, nlevels),
labels = NULL,
xlim = range(x, finite = TRUE),
ylim = range(y, finite = TRUE),
zlim = range(z, finite = TRUE),
labcex = 0.6, drawlabels = TRUE, method = "flattest",
vfont, axes = TRUE, frame.plot = axes,
col = par("fg"), lty = par("lty"), lwd = par("lwd"),
add = FALSE, …)

##### Arguments

- x, y
locations of grid lines at which the values in

`z`

are measured. These must be in ascending order. By default, equally spaced values from 0 to 1 are used. If`x`

is a`list`

, its components`x$x`

and`x$y`

are used for`x`

and`y`

, respectively. If the list has component`z`

this is used for`z`

.- z
a matrix containing the values to be plotted (

`NA`

s are allowed). Note that`x`

can be used instead of`z`

for convenience.- nlevels
number of contour levels desired

**iff**`levels`

is not supplied.- levels
numeric vector of levels at which to draw contour lines.

- labels
a vector giving the labels for the contour lines. If

`NULL`

then the levels are used as labels, otherwise this is coerced by`as.character`

.- labcex
`cex`

for contour labelling. This is an absolute size, not a multiple of`par("cex")`

.- drawlabels
logical. Contours are labelled if

`TRUE`

.- method
character string specifying where the labels will be located. Possible values are

`"simple"`

,`"edge"`

and`"flattest"`

(the default). See the ‘Details’ section.- vfont
if

`NULL`

, the current font family and face are used for the contour labels. If a character vector of length 2 then Hershey vector fonts are used for the contour labels. The first element of the vector selects a typeface and the second element selects a fontindex (see`text`

for more information). The default is`NULL`

on graphics devices with high-quality rotation of text and`c("sans serif", "plain")`

otherwise.- xlim, ylim, zlim
x-, y- and z-limits for the plot.

- axes, frame.plot
logical indicating whether axes or a box should be drawn, see

`plot.default`

.- col
color for the lines drawn.

- lty
line type for the lines drawn.

- lwd
line width for the lines drawn.

- add
logical. If

`TRUE`

, add to a current plot.- …
additional arguments to

`plot.window`

,`title`

,`Axis`

and`box`

, typically graphical parameters such as`cex.axis`

.

##### Details

`contour`

is a generic function with only a default method in
base R.

The methods for positioning the labels on contours are `"simple"`

(draw at the edge of the plot, overlaying the contour line),
`"edge"`

(draw at the edge of the plot, embedded in the contour
line, with no labels overlapping) and `"flattest"`

(draw on the flattest section of the contour, embedded in the
contour line, with no labels overlapping). The second and third may
not draw a label on every contour line.

For information about vector fonts, see the
help for `text`

and `Hershey`

.

Notice that `contour`

interprets the `z`

matrix as a table of
`f(x[i], y[j])`

values, so that the x axis corresponds to row
number and the y axis to column number, with column 1 at the bottom,
i.e.a 90 degree counter-clockwise rotation of the conventional textual
layout.

Alternatively, use `contourplot`

from the
lattice package where the `formula`

notation allows
to use vectors `x`

, `y`

, and `z`

of the same length.

There is limited control over the axes and frame as arguments
`col`

, `lwd`

and `lty`

refer to the contour lines
(rather than being general graphical parameters). For more control,
add contours to a plot, or add axes and frame to a contour plot.

##### References

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

##### See Also

`options("max.contour.segments")`

for the maximal
complexity of a single contour line.

`contourLines`

, `filled.contour`

for color-filled contours,
`contourplot`

(and
`levelplot`

) from package lattice.
Further, `image`

and the graphics demo which can be
invoked as `demo(graphics)`

.

##### Examples

`library(graphics)`

```
# NOT RUN {
require(grDevices) # for colours
x <- -6:16
op <- par(mfrow = c(2, 2))
contour(outer(x, x), method = "edge", vfont = c("sans serif", "plain"))
z <- outer(x, sqrt(abs(x)), FUN = "/")
image(x, x, z)
contour(x, x, z, col = "pink", add = TRUE, method = "edge",
vfont = c("sans serif", "plain"))
contour(x, x, z, ylim = c(1, 6), method = "simple", labcex = 1,
xlab = quote(x[1]), ylab = quote(x[2]))
contour(x, x, z, ylim = c(-6, 6), nlev = 20, lty = 2, method = "simple",
main = "20 levels; \"simple\" labelling method")
par(op)
## Persian Rug Art:
x <- y <- seq(-4*pi, 4*pi, len = 27)
r <- sqrt(outer(x^2, y^2, "+"))
opar <- par(mfrow = c(2, 2), mar = rep(0, 4))
for(f in pi^(0:3))
contour(cos(r^2)*exp(-r/f),
drawlabels = FALSE, axes = FALSE, frame = TRUE)
rx <- range(x <- 10*1:nrow(volcano))
ry <- range(y <- 10*1:ncol(volcano))
ry <- ry + c(-1, 1) * (diff(rx) - diff(ry))/2
tcol <- terrain.colors(12)
par(opar); opar <- par(pty = "s", bg = "lightcyan")
plot(x = 0, y = 0, type = "n", xlim = rx, ylim = ry, xlab = "", ylab = "")
u <- par("usr")
rect(u[1], u[3], u[2], u[4], col = tcol[8], border = "red")
contour(x, y, volcano, col = tcol[2], lty = "solid", add = TRUE,
vfont = c("sans serif", "plain"))
title("A Topographic Map of Maunga Whau", font = 4)
abline(h = 200*0:4, v = 200*0:4, col = "lightgray", lty = 2, lwd = 0.1)
## contourLines produces the same contour lines as contour
plot(x = 0, y = 0, type = "n", xlim = rx, ylim = ry, xlab = "", ylab = "")
u <- par("usr")
rect(u[1], u[3], u[2], u[4], col = tcol[8], border = "red")
contour(x, y, volcano, col = tcol[1], lty = "solid", add = TRUE,
vfont = c("sans serif", "plain"))
line.list <- contourLines(x, y, volcano)
invisible(lapply(line.list, lines, lwd=3, col=adjustcolor(2, .3)))
par(opar)
# }
```

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