Class Pixel1dPlotter<S extends Style>
- java.lang.Object
-
- uk.ac.starlink.ttools.plot2.layer.Pixel1dPlotter<S>
-
- All Implemented Interfaces:
Plotter<S>
- Direct Known Subclasses:
AbstractKernelDensityPlotter
,DensogramPlotter
public abstract class Pixel1dPlotter<S extends Style> extends java.lang.Object implements Plotter<S>
Abstract superclass for histogram-like plotters that have pixel-sized bins with optional smoothing. Only works with PlanarSurfaces.- Since:
- 20 Feb 2015
- Author:
- Mark Taylor
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
Pixel1dPlotter.BinArray
Data object storing counts per pixel.static class
Pixel1dPlotter.Pixel1dPlan
Plot plan implementation for this class.
-
Field Summary
Fields Modifier and Type Field Description static ConfigKey<Kernel1dShape>
KERNEL_KEY
Config key for smoothing kernel shape.static ConfigKey<BinSizer>
SMOOTHSIZER_KEY
Config key for smoothing width configuration.static ReportKey<java.lang.Double>
SMOOTHWIDTH_KEY
Report key for smoothing width.
-
Constructor Summary
Constructors Modifier Constructor Description protected
Pixel1dPlotter(FloatingCoord xCoord, boolean hasWeight, ConfigKey<Unit> unitKey, java.lang.String name, javax.swing.Icon icon)
Constructor.
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description static Kernel1d
createKernel(Kernel1dShape kernelShape, BinSizer sizer, Axis xAxis, boolean xLog, boolean isMean)
Creates a new kernel from configuration items.PlotLayer
createLayer(DataGeom geom, DataSpec dataSpec, S style)
The suppliedgeom
is ignored.protected abstract void
extendPixel1dCoordinateRanges(Range[] ranges, boolean[] logFlags, S style, DataSpec dataSpec, DataStore dataStore)
Performs any required range extension.protected abstract Combiner
getCombiner(S style)
Returns the bin aggregation mode implied by a given style.ConfigKey<Combiner>
getCombinerKey()
Returns the combination mode configuration key for this plotter.CoordGroup
getCoordGroup()
Returns an object describing which data coordinates are used for this plotter and how they are arranged in supplied DataSpec objects.static double[]
getDataBins(Pixel1dPlotter.BinArray binArray, Axis xAxis, Kernel1d kernel, Normalisation norm, Combiner.Type ctype, Unit unit, Cumulation cumul)
Returns an array of data coordinate values, one for each bin accumulated by the bin array (X pixel value).static int
getEffectiveExtent(Kernel1d kernel)
Returns the range of a given kernel over which it will be evaluated for the purposes of this plotter.protected abstract LayerOpt
getLayerOpt(S style)
Returns the LayerOpt suitable for a given style for this plotter.protected abstract ReportMap
getPixel1dReport(Pixel1dPlotter.Pixel1dPlan plan, S style, boolean xLog)
Returns information associated with the plot.protected abstract int
getPixelPadding(S style, PlanarSurface surf)
Returns the padding required at both ends of the array of pixel bins for calculations.static double
getPixelWidth(BinSizer sizer, Axis xAxis, boolean xLog)
Calculates the width in pixel coordinates represented by a bin sizer applied to a given axis.javax.swing.Icon
getPlotterIcon()
Returns an icon for this plotter for use in user interface.java.lang.String
getPlotterName()
Returns the name of this plotter for use in user interface.int
getWeightCoordIndex()
Returns the DataSpec coord index used for the weighting data for this plotter.protected java.lang.String
getWeightingDescription()
Returns an XML description snippet (zero or more P elements) discussing use of weighted coordinates for this plotter.boolean
hasReports()
Indicates whether the drawings produced by this plotter will return general interest report information to upstream plotting code.protected abstract void
paintBins(PlanarSurface surface, Pixel1dPlotter.BinArray binArray, S style, java.awt.Graphics2D g)
Draws the graphical representation of a given array of counts per horizontal pixel.Pixel1dPlotter.BinArray
readBins(Axis xAxis, int padPix, Combiner combiner, DataSpec dataSpec, DataStore dataStore)
Reads per-horizontal-pixel frequency data from a given data set.-
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
createStyle, getPlotterDescription, getStyleKeys
-
-
-
-
Field Detail
-
SMOOTHWIDTH_KEY
public static final ReportKey<java.lang.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 Detail
-
Pixel1dPlotter
protected Pixel1dPlotter(FloatingCoord xCoord, boolean hasWeight, ConfigKey<Unit> unitKey, java.lang.String name, javax.swing.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 Detail
-
getPlotterName
public java.lang.String getPlotterName()
Description copied from interface:Plotter
Returns the name of this plotter for use in user interface.- Specified by:
getPlotterName
in interfacePlotter<S extends Style>
- Returns:
- user-directed plotter name
-
getPlotterIcon
public javax.swing.Icon getPlotterIcon()
Description copied from interface:Plotter
Returns an icon for this plotter for use in user interface.- Specified by:
getPlotterIcon
in interfacePlotter<S extends Style>
- Returns:
- plotter icon
-
getCoordGroup
public CoordGroup getCoordGroup()
Description copied from interface:Plotter
Returns an object describing which data coordinates are used for this plotter and how they are arranged in supplied DataSpec objects.- Specified by:
getCoordGroup
in interfacePlotter<S extends Style>
- Returns:
- coordinate group
-
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 interfacePlotter<S extends Style>
- Returns:
- true if the plot report may return interesting information
- See Also:
Drawing.getReport(java.lang.Object)
-
getWeightingDescription
protected java.lang.String getWeightingDescription()
Returns an XML description snippet (zero or more P elements) discussing use of weighted coordinates for this plotter.- Returns:
- text suitable for inclusion in getPlotterDescription return value
-
getLayerOpt
protected abstract LayerOpt getLayerOpt(S style)
Returns the LayerOpt suitable for a given style for this plotter.- Parameters:
style
- plot style- Returns:
- layer option flags
-
getPixelPadding
protected abstract int getPixelPadding(S style, PlanarSurface surf)
Returns the padding required at both ends of the array of pixel bins for calculations.- Parameters:
style
- plotting stylesurf
- plotting surface- Returns:
- padding in pixels required in bin array
-
getCombiner
protected abstract Combiner getCombiner(S style)
Returns the bin aggregation mode implied by a given style.- Parameters:
style
- plotting style- Returns:
- pixel bin aggregation mode
-
paintBins
protected abstract void paintBins(PlanarSurface surface, Pixel1dPlotter.BinArray binArray, S style, java.awt.Graphics2D g)
Draws the graphical representation of a given array of counts per horizontal pixel.- Parameters:
surface
- plotting surfacebinArray
- counts per X axis pixelstyle
- plotting styleg
- graphics context
-
extendPixel1dCoordinateRanges
protected abstract void extendPixel1dCoordinateRanges(Range[] ranges, boolean[] logFlags, S style, DataSpec dataSpec, DataStore dataStore)
Performs any required range extension. May be a no-op.- 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:
PlotLayer.extendCoordinateRanges(uk.ac.starlink.ttools.plot.Range[], boolean[], uk.ac.starlink.ttools.plot2.data.DataStore)
-
getPixel1dReport
protected abstract ReportMap getPixel1dReport(Pixel1dPlotter.Pixel1dPlan plan, S style, boolean xLog)
Returns information associated with the plot.- Parameters:
plan
- plotting planstyle
- plot stylexLog
- true iff X axis is logarithmic- Returns:
- report info, may be null
- See Also:
Drawing.getReport(java.lang.Object)
-
getCombinerKey
public ConfigKey<Combiner> getCombinerKey()
Returns the combination mode configuration key for this plotter.- Returns:
- combiner key
-
createLayer
public PlotLayer createLayer(DataGeom geom, DataSpec dataSpec, S style)
The suppliedgeom
is ignored.- Specified by:
createLayer
in interfacePlotter<S extends Style>
- Parameters:
geom
- indicates base position coordinates and their mapping to points in the data space; if non-null, the data geom'sDataGeom.hasPosition()
method will return truedataSpec
- specifies the data required for the plotstyle
- data style as obtained fromcreateStyle
- Returns:
- new plot layer, or null if no drawing will take place
-
getWeightCoordIndex
public int getWeightCoordIndex()
Returns the DataSpec coord index used for the weighting data for this plotter. If weighting is not supported, a negative value is returned.- Returns:
- weight coord index, or -1
-
readBins
public Pixel1dPlotter.BinArray readBins(Axis xAxis, int padPix, Combiner combiner, DataSpec dataSpec, DataStore dataStore)
Reads per-horizontal-pixel frequency data from a given data set.- Parameters:
xAxis
- axis along which frequencies are accumulatedpadPix
- number of pixels in each direction outside of the axis range over which counts should be gatheredcombiner
- bin aggregation modedataSpec
- specification for frequency data valuesdataStore
- data storage
-
getDataBins
public static double[] getDataBins(Pixel1dPlotter.BinArray binArray, Axis xAxis, Kernel1d kernel, Normalisation norm, Combiner.Type ctype, Unit unit, Cumulation cumul)
Returns an array of data coordinate values, one for each bin accumulated by the bin array (X pixel value). This is basically the bin array results, but perhaps adjusted by style elements like smoothing, cumulativeness etc.- Parameters:
binArray
- basic resultsxAxis
- axis over which counts are accumulatedkernel
- smoothing kernelnorm
- normalisation modectype
- combiner type used to populate binsunit
- unit for scaling X axis bin widthcumul
- cumulative representation- Returns:
- output data bin values
-
getEffectiveExtent
public static int getEffectiveExtent(Kernel1d kernel)
Returns the range of a given kernel over which it will be evaluated for the purposes of this plotter. This is basically the kernel's extent, but it may be limited to some maximum for practical purposes.- Parameters:
kernel
- smoothing kernel- Returns:
- effective extent
-
createKernel
public static Kernel1d createKernel(Kernel1dShape kernelShape, BinSizer sizer, Axis xAxis, boolean xLog, boolean isMean)
Creates a new kernel from configuration items.- Parameters:
kernelShape
- functional formsizer
- determines width in data coordinatesxAxis
- axis on which samples occurxLog
- true for logarithmic x axis, false for linearisMean
- true if the smoothing is to suitable for intensive quantities like the mean, false for extensive quantities like a sum- Returns:
- kernel
-
getPixelWidth
public static double getPixelWidth(BinSizer sizer, Axis xAxis, boolean xLog)
Calculates the width in pixel coordinates represented by a bin sizer applied to a given axis.- Parameters:
sizer
- determines width in data coordinatesxAxis
- axis on which samples occurxLog
- true for logarithmic x axis, false for linear- Returns:
- width in pixel data coordinates represented by sizer, never negative
-
-