contour(x, ...)
"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, ...)
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
.NA
s are
allowed). Note that x
can be used instead of z
for
convenience.levels
is not supplied.NULL
then the levels are used as labels, otherwise this is
coerced by as.character
.cex
for contour labelling. This is an absolute
size, not a multiple of par("cex")
.TRUE
."simple"
, "edge"
and
"flattest"
(the default). See the ‘Details’ section.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.plot.default
.TRUE
, add to a current plot.plot.window
,
title
, Axis
and box
,
typically graphical parameters such as cex.axis
.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.\ifelse{latex}{\out{~}}{ } a 90 degree counter-clockwise rotation of the conventional textual
layout.
Alternatively, use contourplot
from the
\href{https://CRAN.R-project.org/package=#1}{\pkg{#1}}latticelattice 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.
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 \href{https://CRAN.R-project.org/package=#1}{\pkg{#1}}latticelattice.
Further, image
and the graphics demo which can be
invoked as demo(graphics)
.
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)
Run the code above in your browser using DataLab