Class AbstractKernelDensityPlotter
java.lang.Object
uk.ac.starlink.ttools.plot2.layer.Pixel1dPlotter<AbstractKernelDensityPlotter.KDenseStyle>
uk.ac.starlink.ttools.plot2.layer.AbstractKernelDensityPlotter
- All Implemented Interfaces:
Plotter<AbstractKernelDensityPlotter.KDenseStyle>
- Direct Known Subclasses:
FixedKernelDensityPlotter
,KnnKernelDensityPlotter
public abstract class AbstractKernelDensityPlotter
extends Pixel1dPlotter<AbstractKernelDensityPlotter.KDenseStyle>
Abstract superclass for a plotter that plots something that looks like
a kernel density estimate. In fact, for reasons of efficiency and
implementation, it's a histogram with pixel-sized bins, but it
looks pretty much the same.
Concrete subclasses have to arrange for the details of exactly how kernels are instantiated from a given kernel shape.
- Since:
- 17 Feb 2015
- Author:
- Mark Taylor
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic class
Style subclass for kernel density plots.static interface
Encapsulates the details of smoothing kernel construction.Nested classes/interfaces inherited from class uk.ac.starlink.ttools.plot2.layer.Pixel1dPlotter
Pixel1dPlotter.BinArray, Pixel1dPlotter.Pixel1dPlan
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final ReportKey
<double[]> Report key for plotted bin height in data coordinates.static final ConfigKey
<Normalisation> Config key for normalisation.Config key for line thickness (only effective if fill==false).Fields inherited from class uk.ac.starlink.ttools.plot2.layer.Pixel1dPlotter
KERNEL_KEY, SMOOTHSIZER_KEY, SMOOTHWIDTH_KEY
-
Constructor Summary
ConstructorsModifierConstructorDescriptionprotected
AbstractKernelDensityPlotter
(FloatingCoord xCoord, boolean hasWeight, PerUnitConfigKey<Unit> unitKey, String name, Icon icon) Constructor. -
Method Summary
Modifier and TypeMethodDescriptionprotected abstract AbstractKernelDensityPlotter.KernelFigure
createKernelFigure
(ConfigMap config) Constructs an object for plot-time kernel construction based on a particular config map.createStyle
(ConfigMap config) Creates a style that can be used when creating a plot layer.protected void
extendPixel1dCoordinateRanges
(Range[] ranges, boolean[] logFlags, AbstractKernelDensityPlotter.KDenseStyle style, DataSpec dataSpec, DataStore dataStore) Performs any required range extension.protected Combiner
Returns the bin aggregation mode implied by a given style.protected abstract ConfigKey<?>[]
Returns a list of keys that specify how the smoothing kernel will be configured.protected LayerOpt
Returns the LayerOpt suitable for a given style for this plotter.protected ReportMap
getPixel1dReport
(Pixel1dPlotter.Pixel1dPlan plan, AbstractKernelDensityPlotter.KDenseStyle style, boolean xLog) Returns information associated with the plot.protected int
Returns the padding required at both ends of the array of pixel bins for calculations.Returns an opaque object characterising the region of the plot surface covered when using a given plotter style.ConfigKey<?>[]
Returns the configuration keys used to configure style for this plotter.protected boolean
Returns the sideways flag implied by a given style.protected void
paintBins
(PlanarSurface surface, Pixel1dPlotter.BinArray binArray, AbstractKernelDensityPlotter.KDenseStyle style, Graphics2D g) Draws the graphical representation of a given array of counts per horizontal pixel.Methods inherited from class uk.ac.starlink.ttools.plot2.layer.Pixel1dPlotter
createKernel, createLayer, getCombinerKey, getCoordGroup, getDataBins, getEffectiveExtent, getPixelWidth, getPlotterIcon, getPlotterName, getWeightCoordIndex, getWeightingDescription, hasReports, readBins
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface uk.ac.starlink.ttools.plot2.Plotter
getPlotterDescription
-
Field Details
-
BINS_KEY
Report key for plotted bin height in data coordinates. -
THICK_KEY
Config key for line thickness (only effective if fill==false). -
NORMALISE_KEY
Config key for normalisation.
-
-
Constructor Details
-
AbstractKernelDensityPlotter
protected AbstractKernelDensityPlotter(FloatingCoord xCoord, boolean hasWeight, PerUnitConfigKey<Unit> unitKey, String name, Icon icon) Constructor.- Parameters:
xCoord
- X axis coordinatehasWeight
- true to permit histogram weightingunitKey
- config key to select X axis physical units, or null if no unit selection requiredname
- plotter nameicon
- plotter icon
-
-
Method Details
-
getKernelConfigKeys
Returns a list of keys that specify how the smoothing kernel will be configured.- Returns:
- list of implementation-specific kernel config keys
-
createKernelFigure
protected abstract AbstractKernelDensityPlotter.KernelFigure createKernelFigure(ConfigMap config) throws ConfigException Constructs an object for plot-time kernel construction based on a particular config map.- Parameters:
config
- config map with kernel config keys in it- Throws:
ConfigException
- See Also:
-
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 thePlotter.createStyle(uk.ac.starlink.ttools.plot2.config.ConfigMap)
method.- Returns:
- keys used when creating a style for this plotter.
-
createStyle
public AbstractKernelDensityPlotter.KDenseStyle 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 byPlotter.getStyleKeys()
. The return value can be used as input toPlotter.createLayer(uk.ac.starlink.ttools.plot2.DataGeom, uk.ac.starlink.ttools.plot2.data.DataSpec, S)
.- Parameters:
config
- map of style configuration items- Returns:
- plotter-specific plot style
- Throws:
ConfigException
-
isY
Description copied from class:Pixel1dPlotter
Returns the sideways flag implied by a given style.- Specified by:
isY
in classPixel1dPlotter<AbstractKernelDensityPlotter.KDenseStyle>
- Parameters:
style
- plot style- Returns:
- if true, plot is sideways
-
getLayerOpt
Description copied from class:Pixel1dPlotter
Returns the LayerOpt suitable for a given style for this plotter.- Specified by:
getLayerOpt
in classPixel1dPlotter<AbstractKernelDensityPlotter.KDenseStyle>
- Parameters:
style
- plot style- Returns:
- layer option flags
-
getPixelPadding
Description copied from class:Pixel1dPlotter
Returns the padding required at both ends of the array of pixel bins for calculations.- Specified by:
getPixelPadding
in classPixel1dPlotter<AbstractKernelDensityPlotter.KDenseStyle>
- Parameters:
style
- plotting stylesurf
- plotting surface- Returns:
- padding in pixels required in bin array
-
getCombiner
Description copied from class:Pixel1dPlotter
Returns the bin aggregation mode implied by a given style.- Specified by:
getCombiner
in classPixel1dPlotter<AbstractKernelDensityPlotter.KDenseStyle>
- Parameters:
style
- plotting style- Returns:
- pixel bin aggregation mode
-
paintBins
protected void paintBins(PlanarSurface surface, Pixel1dPlotter.BinArray binArray, AbstractKernelDensityPlotter.KDenseStyle style, Graphics2D g) Description copied from class:Pixel1dPlotter
Draws the graphical representation of a given array of counts per horizontal pixel.- Specified by:
paintBins
in classPixel1dPlotter<AbstractKernelDensityPlotter.KDenseStyle>
- Parameters:
surface
- plotting surfacebinArray
- counts per X axis pixelstyle
- plotting styleg
- graphics context
-
extendPixel1dCoordinateRanges
protected void extendPixel1dCoordinateRanges(Range[] ranges, boolean[] logFlags, AbstractKernelDensityPlotter.KDenseStyle style, DataSpec dataSpec, DataStore dataStore) Description copied from class:Pixel1dPlotter
Performs any required range extension. May be a no-op.- Specified by:
extendPixel1dCoordinateRanges
in classPixel1dPlotter<AbstractKernelDensityPlotter.KDenseStyle>
- Parameters:
ranges
- array of data space dimension ranges to updatelogFlags
- array of linear/log flags corresponding to rangesstyle
- plotting styledataSpec
- data specificationdataStore
- data storage object- See Also:
-
getRangeStyleKey
Description copied from interface:Plotter
Returns an opaque object characterising the region of the plot surface covered when using a given plotter style. If this object changes between layers produced by this plotter, it provides a hint that it may be necessary to redetermine the axis ranges (usingextendCoordinateRanges
).In many cases, such as scatter-plot-like plotters, the range is determined only by the coordinate data (managed by
DataSpec
inputs) so a null value may be returned. This method is chiefly required by histogram-like plotters for which the region on the plot surface is not the union of the input positions.- Parameters:
style
- plot style to assess- Returns:
- opaque object with equality semantics, or null if axis range is not a function of style
-
getPixel1dReport
protected ReportMap getPixel1dReport(Pixel1dPlotter.Pixel1dPlan plan, AbstractKernelDensityPlotter.KDenseStyle style, boolean xLog) Description copied from class:Pixel1dPlotter
Returns information associated with the plot.- Specified by:
getPixel1dReport
in classPixel1dPlotter<AbstractKernelDensityPlotter.KDenseStyle>
- Parameters:
plan
- plotting planstyle
- plot stylexLog
- true iff X axis is logarithmic- Returns:
- report info, may be null
- See Also:
-