Produces contour maps of two-way arrays of numbers using character (i.e. line-printer) graphics.

### Options

`CHANNEL` = scalar |
Channel number of output file; default is current output file |
---|---|

`INTERVAL` = scalar |
Contour interval for scaling; default `*` i.e. determined automatically |

`TITLE` = text |
General title; default `*` |

`YTITLE` = text |
Title for y-axis; default `*` |

`XTITLE` = text |
Title for x-axis; default `*` |

`YLOWER` = scalar |
Lower bound for y-axis; default 0 |

`YUPPER` = scalar |
Upper bound for y-axis; default 1 |

`XLOWER` = scalar |
Lower bound for x-axis; default 0 |

`XUPPER` = scalar |
Upper bound for x-axis; default 1 |

`YINTEGER` = string token |
Whether y-labels integral (`yes` , `no` ); default `no` |

`XINTEGER` = string token |
Whether x-labels integral (`yes` , `no` ); default `no` |

`LOWERCUTOFF` = scalar |
Lower cut-off for array values; default `*` |

`UPPERCUTOFF` = scalar |
Upper cut-off for array values; default `*` |

### Parameters

`GRID` = identifiers |
Pointers (of variates representing the columns of a data matrix), matrices or two-way tables specifying values on a regular grid |
---|---|

`DESCRIPTION` = texts |
Annotation for key |

### Description

A contour plot provides a way of displaying three-dimensional data in a two-dimensional plot. `LPCONTOUR`

produces these in “line-printer” format, that is, using the characters of ordinary output rather than a high-resolution graphics display. It was added in Release 10 as a synonym of the earlier `CONTOUR`

directive, which may be modified to use high-resolution graphics in a future release.

The data values are supplied as a rectangular array of numbers that represent the values of the variable in the third dimension, often referred to as *height* or the *z-axis*. The first two dimensions (x and y) are the rows and columns indexing the array; the complete three-dimensional data set is referred to as a *surface* or *grid*. Contours are lines that are used to join points of equal height, and usually some form of interpolation is used to estimate where these points lie. The resulting contour plot is not necessarily very “realistic” when compared to perspective plots produced by `DSURFACE`

, but it has the advantage that the entire surface can easily be examined, without the danger of some parts being obscured by high points or regions.

You might use contour plots for example when you have data sampled at points on a regular grid, such as the concentrations of a trace element or nutrient in the soil. Contours are also very useful when fitting nonlinear models, when they can be used to study two-dimensional slices of the likelihood surface, to help find good initial estimates of the parameters.

`LPCONTOUR`

produces output by using cubic interpolation between the grid points to estimate a z-value for each character position in the plot. Each value is reduced to a single digit in the range 0 … 9, according to the rules described below. To produce the contour plot only the even digits are printed: you can then see the contours as the boundaries between the blank areas and the printed digits.

The `GRID`

parameter can be set to a matrix, a two-way table (with the first factor defining the rows), or a pointer to a set of variates each containing a column of data. We explain the conventions in terms of a matrix as input, but similar rules apply to the other structures. When reading or printing a matrix the origin of the rows and columns (row 1, column 1) appears at the top left-hand corner. However, in forming the contour plot the rows are reversed in order so that the first row of the matrix is placed at the bottom of the contour; thus the origin of the contour is located, according to the usual conventions, at the bottom left-hand corner of the plot. The `DCONTOUR`

directive, which plots contours using high-resolution graphics, also reverses the rows of the grid in the same way.

`LPCONTOUR`

scales the grid values by dividing by the contour interval. The scaled grid values are then converted to single digits by taking the remainder modulo 10 and truncating the fractional part. The `INTERVAL`

option allows you to set the contour interval. For example, if the grid values range from 17 to 72 and the interval is set to 10, contour lines (the boundaries between blank space and printed digits) will occur at grid values of 20, 30, 40, 50, 60 and 70. By default, the interval is determined from the range of the data in order to obtain 10 contours.

The `UPPERCUTOFF`

and `LOWERCUTOFF`

options can be used to define a window for the grid values that will form the contours. All values above or below these are printed as `X`

. Setting either `UPPERCUTOFF`

or `LOWERCUTOFF`

will change the default contour interval, as the range of data values is effectively curtailed.

You can use the `TITLE`

, `YTITLE `

and `XTITLE`

option to annotate the contour plot. If you specify several grids, these will be plotted in separate frames and the text of the `TITLE`

option will appear at the top of each one. You should thus use `TITLE`

only to give a general description of what the contours represent. The `DESCRIPTION`

parameter can be used to add specific descriptions to be printed at the bottom of each individual plot.

The `YUPPER`

and `YLOWER`

options allow you to set upper and lower bounds for the y-axis; thus generating axis labels that reflect the range of values over which the grid was observed or evaluated. Setting `YINTEGER=yes`

will ensure the labels are printed as integers, if possible. The default axis bounds are 0.0 and 1.0. The options `XLOWER`

, `XUPPER `

and `XINTEGER`

similarly control labelling of the x-axis.

Options: `CHANNEL`

, `INTERVAL`

, `TITLE`

, `YTITLE`

, `XTITLE`

, `YLOWER`

, `YUPPER`

, `XLOWER`

, `XUPPER`

, `YINTEGER`

, `XINTEGER`

, `LOWERCUTOFF`

, `UPPERCUTOFF`

.

Parameters: `GRID`

, `DESCRIPTION`

.

### Action with `RESTRICT`

`LPCONTOUR`

takes account of restrictions on any of the variates in a `GRID`

pointer.

### See also

Directives: `DCONTOUR`

, `LPGRAPH`

, `LPHISTOGRAM`

.

Commands for: Graphics.

### Example

" Example 1:6.10.3a-b " MATRIX [ROWS=5; COLUMNS=7] X,Y; VALUES=!((1...7)5),!(7(1...5)) CALCULATE Zvalues = (X-2.5)*(X-6)*X - 10*(Y-3)*(Y-3) LPCONTOUR [TITLE='Z(x,y) = x*(x-2.5)*(x-6) - 10*(y-3)**2';\ YTITLE='Y values'; XTITLE='X values'] Zvalues " Core samples were taken from a wetland rice experiment to examine the leaching of ammonium nitrate. Three three cores were taken at intervals of 5cm, and the concentration of ammonium nitrate was measured at depths of 4, 8, ... 20 cm. " VARIATE [NVALUES=5] Core[1...5] READ Core[] 7 6 129 10 9 8 82 2315 53 7 5 195 1064 77 7 10 35 1034 30 9 11 20 161 10 15: TEXT [VALUES=' Samples taken 40 days after placement ',\ ' of 2 grams supergranule urea. '] Coredesc CALCULATE Core[] = LOG10(REVERSE(Core[])) LPCONTOUR [YTITLE='Soil depth in cm';\ XTITLE='Distance from central core';\ YINTEGER=yes; XINTEGER=yes; YUPPER=4; YLOWER=20; XUPPER=10; XLOWER=-10]\ Core; DESCRIPTION=Coredesc