# Class ContourPlotter

java.lang.Object
uk.ac.starlink.ttools.plot2.layer.AbstractPlotter<ContourStyle>
uk.ac.starlink.ttools.plot2.layer.ContourPlotter

All Implemented Interfaces:
  `Plotter<ContourStyle>`

public class ContourPlotter extends AbstractPlotter<ContourStyle>
Plotter implementation that draws contours for a density map of points.

Since:
  17 Feb 2013
Author:
  Mark Taylor

## Field Summary

Fields
Modifier and Type
Field
Description
`static final ConfigKey<Combiner>`
`COMBINER_KEY`
Config key for the smoothing combination mode.
`static final ReportKey<double[]>`
`LEVELS_REPKEY`
Report key for the contour levels plotted.
`static final ConfigKey<Integer>`
`NLEVEL_KEY`
Config key for the number of contour levels plotted.
`static final ConfigKey<Double>`
`OFFSET_KEY`
Config key for the contour zero level.
`static final ConfigKey<Integer>`
`SMOOTH_KEY`
Config key for the width of the smoothing kernel.
`static final ConfigKey<Integer>`
`THICKNESS_KEY`
Config key for the plotted line thickness.

## Constructor Summary

Constructors
Constructor
Description
`ContourPlotter(boolean hasWeight)`
Constructor.

## Method Summary

Modifier and Type
Method
Description
`PlotLayer`
`createLayer(DataGeom geom, DataSpec dataSpec, ContourStyle style)`
Creates a PlotLayer based on the given geometry, data and style.
`ContourStyle`
`createStyle(ConfigMap config)`
Creates a style that can be used when creating a plot layer.
`String`
`getPlotterDescription()`
Returns an XML description of this plotter.
`ConfigKey<?>[]`
`getStyleKeys()`
Returns the configuration keys used to configure style for this plotter.
`boolean`
`hasReports()`
Indicates whether the drawings produced by this plotter will return general interest report information to upstream plotting code.

### Methods inherited from class AbstractPlotter

`getCoordGroup, getPlotterIcon, getPlotterName, getRangeStyleKey`

### Methods inherited from class Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Field Details

### NLEVEL_KEY

public static final ConfigKey<Integer> NLEVEL_KEY
Config key for the number of contour levels plotted.

### SMOOTH_KEY

public static final ConfigKey<Integer> SMOOTH_KEY
Config key for the width of the smoothing kernel.

### THICKNESS_KEY

public static final ConfigKey<Integer> THICKNESS_KEY
Config key for the plotted line thickness.

### OFFSET_KEY

public static final ConfigKey<Double> OFFSET_KEY
Config key for the contour zero level.

### COMBINER_KEY

public static final ConfigKey<Combiner> COMBINER_KEY
Config key for the smoothing combination mode.

### LEVELS_REPKEY

public static final ReportKey<double[]> LEVELS_REPKEY
Report key for the contour levels plotted.

## Constructor Details

### ContourPlotter

public ContourPlotter(boolean hasWeight)
Constructor.

Parameters:
  `hasWeight` - true if plotter is to allow weighted contour maps

## Method Details

### getPlotterDescription

public String getPlotterDescription()
Description copied from interface: `Plotter`
Returns an XML description of this plotter.

Note: really this should appear at the LayerType level.

Returns:
  one or more <p> elements

### hasReports

public boolean hasReports()
Description copied from interface: `Plotter`
Indicates whether the drawings produced by this plotter will return general interest report information to upstream plotting code.

Specified by:
  `hasReports` in interface `Plotter<ContourStyle>`
Overrides:
  `hasReports` in class `AbstractPlotter<ContourStyle>`
Returns:
  true if the plot report may return interesting information
See Also:
  - `Drawing.getReport(Object)`

### getStyleKeys

public ConfigKey<?>[] getStyleKeys()
Description copied from interface: `Plotter`
Returns the configuration keys used to configure style for this plotter. The keys in the return value are used in the map supplied to the `Plotter.createStyle(ConfigMap)` method.

Returns:
  keys used when creating a style for this plotter.

### createStyle

public ContourStyle createStyle(ConfigMap config)
Description copied from interface: `Plotter`
Creates a style that can be used when creating a plot layer. The keys that are significant in the supplied config map are those returned by `Plotter.getStyleKeys()`. The return value can be used as input to `Plotter.createLayer(DataGeom, DataSpec, S)`.

Parameters:
  `config` - map of style configuration items
Returns:
  plotter-specific plot style

### createLayer

public PlotLayer createLayer(DataGeom geom, DataSpec dataSpec, ContourStyle style)
Description copied from interface: `Plotter`
Creates a PlotLayer based on the given geometry, data and style.

The `style` parameter is the result of a call to `Plotter.createStyle(ConfigMap)`.

The `dataSpec` parameter must contain the coordinates defined by this plotter's CoordGroup.

The `pointDataGeom` parameter is only used if the `CoordGroup.getBasicPositionCount()` or `CoordGroup.getExtraPositionCount()` method from this plotter's CoordGroup return a non-zero value, otherwise the plot does not have point positions.

It is legal to supply null for any of the parameters; if insufficient data is supplied to generate a plot, then the method should return null.

Creating a layer should be cheap; layers may be created and not used.

Parameters:
  `geom` - indicates base position coordinates and their mapping to points in the data space
  `dataSpec` - specifies the data required for the plot
  `style` - data style as obtained from `createStyle`
Returns:
  new plot layer, or null if no drawing will take place