# Class FunctionPlotter

java.lang.Object
uk.ac.starlink.ttools.plot2.layer.AbstractPlotter<FunctionPlotter.FunctionStyle>
uk.ac.starlink.ttools.plot2.layer.FunctionPlotter

All Implemented Interfaces:
  `Plotter<FunctionPlotter.FunctionStyle>`

public class FunctionPlotter extends AbstractPlotter<FunctionPlotter.FunctionStyle>
Dataless plotter that plots an analytic function. JEL expressions are supplied to define the function. The geometry is parameterised by the `FunctionPlotter.FuncAxis` interface, which in principle allows functions of any geometric variable to be specified.

Since:
  15 Feb 2013
Author:
  Mark Taylor

## Nested Class Summary

Nested Classes
Modifier and Type
Class
Description
`static interface`
`FunctionPlotter.FuncAxis`
Defines the geometric role of the dependent and independent variables for a function.
`static class`
`FunctionPlotter.FunctionStyle`
Style class associated with this plotter.

## Field Summary

Fields
Modifier and Type
Field
Description
`static final ConfigKey<String>`
`FEXPR_KEY`
Config key for the function expression.
`static final FunctionPlotter`
`PLANE`
FunctionPlotter instance for a 2-d plotting surface.
`static final ConfigKey<String>`
`XNAME_KEY`
Config key for the independent variable name.

## Constructor Summary

Constructors
Constructor
Description
`FunctionPlotter(FunctionPlotter.FuncAxis[] axes)`
Constructs a plotter with a given set of axis geometry options.

## Method Summary

Modifier and Type
Method
Description
`PlotLayer`
`createLayer(DataGeom geom, DataSpec dataSpec, FunctionPlotter.FunctionStyle style)`
Creates a PlotLayer based on the given geometry, data and style.
`FunctionPlotter.FunctionStyle`
`createStyle(ConfigMap config)`
Creates a style that can be used when creating a plot layer.
`Map<String, ? extends Constant<?>>`
`getConstantMap()`
Returns the map of constant objects for values that may be referenced by expressions plotted here.
`ConfigKey<?>[]`
`getFunctionStyleKeys()`
Returns the subset of the style keys which defines the function itself.
`String`
`getPlotterDescription()`
Returns an XML description of this plotter.
`ConfigKey<?>[]`
`getStyleKeys()`
Returns the configuration keys used to configure style for this plotter.
`void`
`setConstantMap(Map<String, ? extends Constant<?>> constMap)`
Sets a map from constant name to constant objects for values that may be referenced by expressions plotted here.

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

### PLANE

public static final FunctionPlotter PLANE
FunctionPlotter instance for a 2-d plotting surface.

### XNAME_KEY

public static final ConfigKey<String> XNAME_KEY
Config key for the independent variable name.

### FEXPR_KEY

public static final ConfigKey<String> FEXPR_KEY
Config key for the function expression.

## Constructor Details

### FunctionPlotter

public FunctionPlotter(FunctionPlotter.FuncAxis[] axes)
Constructs a plotter with a given set of axis geometry options.

Parameters:
  `axes` - options for function variable definitions

## Method Details

### setConstantMap

public void setConstantMap(Map<String, ? extends Constant<?>> constMap)
Sets a map from constant name to constant objects for values that may be referenced by expressions plotted here. The identity and/or content of this map may change over the lifetime of this plotter.

Parameters:
  `constMap` - map of JEL constants by name, may be null

### getConstantMap

public Map<String, ? extends Constant<?>> getConstantMap()
Returns the map of constant objects for values that may be referenced by expressions plotted here. The identity and/or content of this map may change over the lifetime of this plotter.

Returns:
  map of JEL constants by name, may be null

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

### getFunctionStyleKeys

public ConfigKey<?>[] getFunctionStyleKeys()
Returns the subset of the style keys which defines the function itself.

Returns:
  style keys for function definition

### createStyle

public FunctionPlotter.FunctionStyle createStyle(ConfigMap config) throws ConfigException
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
Throws:
  `ConfigException`

### createLayer

public PlotLayer createLayer(DataGeom geom, DataSpec dataSpec, FunctionPlotter.FunctionStyle 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