# contourLines: Calculate Contour Lines

## Description

Calculate contour lines for a given set of data.

## Usage

 ```1 2 3 4``` ```contourLines(x = seq(0, 1, length.out = nrow(z)), y = seq(0, 1, length.out = ncol(z)), z, nlevels = 10, levels = pretty(range(z, na.rm = TRUE), nlevels)) ```

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

## Details

`contourLines` draws nothing, but returns a set of contour lines.

There is currently no documentation about the algorithm. The source code is in ‘R_HOME/src/main/plot3d.c’.

## Value

A `list` of contours, each itself a `list` with elements:

 `level ` The contour level. `x ` The x-coordinates of the contour. `y ` The y-coordinates of the contour.

`options("max.contour.segments")` for the maximal complexity of a single contour line.
`contour`: Its ‘Examples’ demonstrate how `contourLines()` can be drawn and are the same (as those from `contour()`).
 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13``` ```x <- 10*1:nrow(volcano) y <- 10*1:ncol(volcano) cl <- contourLines(x, y, volcano) ## summarize the sizes of each the contour lines : cbind(lev = vapply(cl, `[[`, .5, "level"), n = vapply(cl, function(l) length(l\$x), 1)) z <- outer(-9:25, -9:25) pretty(range(z), 10) # -300 -200 ... 600 700 utils::str(c2 <- contourLines(z)) # no segments for {-300, 700}; # 2 segments for {-200, -100, 0} # 1 segment for 100:600 ```