# Class TracePlotter

java.lang.Object
uk.ac.starlink.ttools.plot2.layer.AbstractPlotter<TracePlotter.TraceStyle>
uk.ac.starlink.ttools.plot2.layer.TracePlotter

All Implemented Interfaces:
  `Plotter<TracePlotter.TraceStyle>`

public abstract class TracePlotter extends AbstractPlotter<TracePlotter.TraceStyle>
Plots a line through a cloud of points in 2d, tracing a given quantile or pair of quantiles at each column (or row) of pixels.

Since:
  9 Dec 2016
Author:
  Mark Taylor

## Nested Class Summary

Nested Classes
Modifier and Type
Class
Description
`static class`
`TracePlotter.QJoin`
Defines the graphial style for joining sparse samples.
`static class`
`TracePlotter.TraceStyle`
Style for trace plot.

## Field Summary

Fields
Modifier and Type
Field
Description
`static final ConfigKey<Boolean>`
`HORIZONTAL_KEY`
Key to configure whether trace is vertical or horizontal.
`static final ConfigKey<Kernel1dShape>`
`KERNEL_KEY`
Config key for smoothing kernel shape.
`static final ConfigKey<Subrange>`
`QUANTILES_KEY`
Key to configure target quantile range.
`static final ConfigKey<BinSizer>`
`SMOOTHSIZER_KEY`
Config key for smoothing width configuration.
`static final ReportKey<Double>`
`SMOOTHWIDTH_KEY`
Report key for smoothing width.
`static final ConfigKey<Integer>`
`THICK_KEY`
Key to configure line thickness.

## Constructor Summary

Constructors
Constructor
Description
`TracePlotter(String name, Icon icon, CoordGroup coordGrp, boolean hasVertical, String basicDescription, TracePlotter.QJoin dfltJoin)`
Constructor.

## Method Summary

Modifier and Type
Method
Description
`static TracePlotter`
`createArraysTracePlotter(boolean hasVertical)`
Creates a TracePlotter instance for X/Y array data.
`protected abstract FillPlan`
`createFillPlan(Surface surface, DataSpec dataSpec, DataGeom geom, TracePlotter.TraceStyle style, DataStore dataStore)`
Creates a plan object suitable for this layer.
`PlotLayer`
`createLayer(DataGeom geom, DataSpec dataSpec, TracePlotter.TraceStyle style)`
Creates a PlotLayer based on the given geometry, data and style.
`static TracePlotter`
`createPointsTracePlotter(boolean hasVertical)`
Creates a TracePlotter instance for standard 2-d point cloud data.
`TracePlotter.TraceStyle`
`createStyle(ConfigMap config)`
Creates a style that can be used when creating a plot layer.
`ConfigKey<TracePlotter.QJoin>`
`getJoinModeKey()`
Returns the config key for the Join Mode used by this plotter.
`String`
`getPlotterDescription()`
Returns an XML description of this plotter.
`ConfigKey<?>[]`
`getStyleKeys()`
Returns the configuration keys used to configure style for this plotter.

### Methods inherited from class AbstractPlotter

`getCoordGroup, getPlotterIcon, getPlotterName, getRangeStyleKey, hasReports`

### Methods inherited from class Object

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

## Field Details

### HORIZONTAL_KEY

public static final ConfigKey<Boolean> HORIZONTAL_KEY
Key to configure whether trace is vertical or horizontal.

### THICK_KEY

public static final ConfigKey<Integer> THICK_KEY
Key to configure line thickness.

### QUANTILES_KEY

public static final ConfigKey<Subrange> QUANTILES_KEY
Key to configure target quantile range.

### SMOOTHWIDTH_KEY

public static final ReportKey<Double> SMOOTHWIDTH_KEY
Report key for smoothing width.

### SMOOTHSIZER_KEY

public static final ConfigKey<BinSizer> SMOOTHSIZER_KEY
Config key for smoothing width configuration.

### KERNEL_KEY

public static final ConfigKey<Kernel1dShape> KERNEL_KEY
Config key for smoothing kernel shape.

## Constructor Details

### TracePlotter

public TracePlotter(String name, Icon icon, CoordGroup coordGrp, boolean hasVertical, String basicDescription, TracePlotter.QJoin dfltJoin)
Constructor.

Parameters:
  `name` - plotter name
  `icon` - plotter icon
  `coordGrp` - coordinate group
  `hasVertical` - true iff vertical fill is offered (otherwise only horizontal)
  `basicDescription` - main part of XML description, may be augmented by the base class
  `dfltJoin` - default join mode

## Method Details

### getJoinModeKey

public ConfigKey<TracePlotter.QJoin> getJoinModeKey()
Returns the config key for the Join Mode used by this plotter.

Returns:
  join mode config key

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

### 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 TracePlotter.TraceStyle 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, TracePlotter.TraceStyle 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

### createFillPlan

@Slow protected abstract FillPlan createFillPlan(Surface surface, DataSpec dataSpec, DataGeom geom, TracePlotter.TraceStyle style, DataStore dataStore)
Creates a plan object suitable for this layer.

Parameters:
  `surface` - plot surface
  `dataSpec` - data spec
  `geom` - geom
  `style` - style
  `dataStore` - data store
Returns:
  populated plan

### createPointsTracePlotter

public static TracePlotter createPointsTracePlotter(boolean hasVertical)
Creates a TracePlotter instance for standard 2-d point cloud data.

Parameters:
  `hasVertical` - true iff vertical fill is offered (otherwise only horizontal)
Returns:
  plotter instance

### createArraysTracePlotter

public static TracePlotter createArraysTracePlotter(boolean hasVertical)
Creates a TracePlotter instance for X/Y array data.

Parameters:
  `hasVertical` - true iff vertical fill is offered (otherwise only horizontal)
Returns:
  plotter instance