contour: Contour Detection Probability

contourR Documentation

Contour Detection Probability


Display contours of the net probability of detection p.(X), or the area within a specified distance of detectors. buffer.contour adds a conventional ‘boundary strip’ to a detector (trap) array, where buffer equals the strip width.


pdot.contour(traps, border = NULL, nx = 64, detectfn = 0,
    detectpar = list(g0 = 0.2, sigma = 25, z = 1), noccasions = NULL,
    binomN = NULL, levels = seq(0.1, 0.9, 0.1), poly =
    NULL, poly.habitat = TRUE, plt = TRUE, add = FALSE, fill = NULL, ...)

buffer.contour(traps, buffer, nx = 64, convex = FALSE, ntheta = 100,
     plt = TRUE, add = FALSE, poly = NULL, poly.habitat = TRUE, 
     fill = NULL, ...)



traps object (or mask for buffer.contour)


width of blank margin around the outermost detectors


dimension of interpolation grid in x-direction


integer code or character string for shape of detection function 0 = halfnormal etc. – see detectfn


list of values for named parameters of detection function


number of sampling occasions


integer code for discrete distribution (see


vector of levels for p.(X)


matrix of two columns, the x and y coordinates of a bounding polygon (optional)


logical as in make.mask


logical to plot contours


logical to add contour(s) to an existing plot


vector of colours to fill contours (optional)


other arguments to pass to contour


vector of buffer widths


logical, if TRUE the plotted contour(s) will be convex


integer value for smoothness of convex contours


pdot.contour constructs a rectangular mask and applies pdot to compute the p.(X) at each mask point.

If convex = FALSE, buffer.contour constructs a mask and contours the points on the basis of distance to the nearest detector at the levels given in buffer.

If convex = TRUE, buffer.contour constructs a set of potential vertices by adding points on a circle of radius = buffer to each detector location; the desired contour is the convex hull of these points (this algorithm derives from Efford, 2012).

If traps has a usage attribute then noccasions is set accordingly; otherwise it must be provided.

If traps is for multiple sessions then detectpar should be a list of the same length, one component per session, and noccasions may be a numeric vector of the same length.

Increase nx for smoother lines, at the expense of speed.


Coordinates of the plotted contours are returned as a list with one component per polygon. The list is returned invisibly if plt = TRUE.

For multi-session input (traps) the value is a list of such lists, one per session.


The precision (smoothness) of the fitted line in buffer.contour is controlled by ntheta rather than nx when convex = TRUE.

To suppress contour labels, include the argument drawlabels = FALSE (this will be passed via ... to contour). Other useful arguments of contour are col (colour of contour lines) and lwd (line width).

You may wish to consider function st_buffer in package sf as an alternative to buffer.contour..

buffer.contour failed with multi-session traps before secr 2.8.0.


Efford, M. G. (2012) DENSITY 5.0: software for spatially explicit capture–recapture. Department of Mathematics and Statistics, University of Otago, Dunedin, New Zealand

See Also

pdot, make.mask


possumtraps <- traps(possumCH)

## convex and concave buffers
plot(possumtraps, border = 270)
buffer.contour(possumtraps, buffer = 100, add = TRUE, col = "blue")
buffer.contour(possumtraps, buffer = 100, convex = TRUE, add = TRUE)

## areas
buff.concave <- buffer.contour(possumtraps, buffer = 100,
    plt = FALSE)
buff.convex  <- buffer.contour(possumtraps, buffer = 100,
    plt = FALSE, convex = TRUE)
sum (sapply(buff.concave, polyarea)) ## sum over parts
sapply(buff.convex, polyarea)

## effect of nx on area
buff.concave2 <- buffer.contour(possumtraps, buffer = 100,
    nx = 128, plt = FALSE)
sum (sapply(buff.concave2, polyarea))

## Not run: 

plot(possumtraps, border = 270)
pdot.contour(possumtraps, detectfn = 0, nx = 128, detectpar =
    detectpar(possum.model.0), levels = c(0.1, 0.01, 0.001),
    noccasions = 5, add = TRUE)

## clipping to polygon
olddir <- setwd(system.file("extdata", package = "secr"))
possumtraps <- traps(possumCH)
possumarea <- read.table("possumarea.txt", header = TRUE)
par(xpd = TRUE, mar = c(1,6,6,6))
plot(possumtraps, border = 400, gridlines = FALSE)
pdot.contour(possumtraps, detectfn = 0, nx = 256, detectpar =
    detectpar(possum.model.0), levels = c(0.1, 0.01, 0.001),
    noccasions = 5, add = TRUE, poly = possumarea, col = "blue")
par(xpd = FALSE, mar = c(5,4,4,2) + 0.1)    ## reset to default

## End(Not run)

secr documentation built on Oct. 18, 2023, 1:07 a.m.