uk.ac.starlink.ttools.plot2.layer
Class Pixel1dPlotter<S extends Style>

java.lang.Object
  extended by 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 Object
implements Plotter<S>

Abstract superclass for histogram-like plotters that have pixel-sized bins with optional smoothing. Only works with PlaneSurfaces.

Since:
20 Feb 2015
Author:
Mark Taylor

Nested Class Summary
static class Pixel1dPlotter.BinArray
          Data object storing counts per pixel.
static class Pixel1dPlotter.Pixel1dPlan
          Plot plan implementation for this class.
 
Field Summary
static ConfigKey<Kernel1dShape> KERNEL_KEY
          Config key for smoothing kernel shape.
static ConfigKey<BinSizer> SMOOTHSIZER_KEY
          Config key for smoothing width configuration.
static ReportKey<Double> SMOOTHWIDTH_KEY
          Report key for smoothing width.
 
Constructor Summary
protected Pixel1dPlotter(FloatingCoord xCoord, boolean hasWeight, String name, Icon icon)
          Constructor.
 
Method Summary
 Pixel1dPlotter.Pixel1dPlan calculatePixelPlan(Object[] knownPlans, Axis xAxis, int xpad, DataSpec dataSpec, DataStore dataStore)
          Calculates the plan object for this plotter.
static Kernel1d createKernel(Kernel1dShape kernelShape, BinSizer sizer, Axis xAxis, boolean xLog)
          Creates a new kernel from configuration items.
 PlotLayer createLayer(DataGeom geom, DataSpec dataSpec, S style)
          The supplied geom is ignored.
protected abstract  void extendPixel1dCoordinateRanges(Range[] ranges, boolean[] logFlags, S style, DataSpec dataSpec, DataStore dataStore)
          Performs any required range extension.
 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, boolean 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, PlaneSurface 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.
 Icon getPlotterIcon()
          Returns an icon for this plotter for use in user interface.
 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.
 boolean hasReports()
          Indicates whether the drawings produced by this plotter will return general interest report information to upstream plotting code.
protected abstract  void paintBins(PlaneSurface surface, Pixel1dPlotter.BinArray binArray, S style, Graphics2D g)
          Draws the graphical representation of a given array of counts per horizontal pixel.
 Pixel1dPlotter.BinArray readBins(Axis xAxis, int padPix, 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<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,
                         String name,
                         Icon icon)
Constructor.

Parameters:
xCoord - X axis coordinate
hasWeight - true to permit histogram weighting
name - plotter name
icon - plotter icon
Method Detail

getPlotterName

public String getPlotterName()
Description copied from interface: Plotter
Returns the name of this plotter for use in user interface.

Specified by:
getPlotterName in interface Plotter<S extends Style>
Returns:
user-directed plotter name

getPlotterIcon

public Icon getPlotterIcon()
Description copied from interface: Plotter
Returns an icon for this plotter for use in user interface.

Specified by:
getPlotterIcon in interface Plotter<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 interface Plotter<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 interface Plotter<S extends Style>
Returns:
true if the plot report may return interesting information
See Also:
Drawing.getReport(java.lang.Object)

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,
                                       PlaneSurface surf)
Returns the padding required at both ends of the array of pixel bins for calculations.

Parameters:
style - plotting style
surf - plotting surface
Returns:
padding in pixels required in bin array

paintBins

protected abstract void paintBins(PlaneSurface surface,
                                  Pixel1dPlotter.BinArray binArray,
                                  S style,
                                  Graphics2D g)
Draws the graphical representation of a given array of counts per horizontal pixel.

Parameters:
surface - plotting surface
binArray - counts per X axis pixel
style - plotting style
g - 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 update
logFlags - array of linear/log flags corresponding to ranges
style - plotting style
dataSpec - data specification
dataStore - 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 plan
style - plot style
xLog - true iff X axis is logarithmic
Returns:
report info, may be null
See Also:
Drawing.getReport(java.lang.Object)

calculatePixelPlan

public Pixel1dPlotter.Pixel1dPlan calculatePixelPlan(Object[] knownPlans,
                                                     Axis xAxis,
                                                     int xpad,
                                                     DataSpec dataSpec,
                                                     DataStore dataStore)
Calculates the plan object for this plotter.

Parameters:
knownPlans - available plan objects
xAxis - bin width axis
xpad - number of pixel bins required each side of plot range
dataSpec - data specification
dataStore - data storage object

createLayer

public PlotLayer createLayer(DataGeom geom,
                             DataSpec dataSpec,
                             S style)
The supplied geom is ignored.

Specified by:
createLayer in interface Plotter<S extends Style>
Parameters:
geom - indicates base position coordinates and their mapping to points in the data space; if non-null, the data geom's DataGeom.hasPosition() method will return true
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

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,
                                        DataSpec dataSpec,
                                        DataStore dataStore)
Reads per-horizontal-pixel frequency data from a given data set.

Parameters:
xAxis - axis along which frequencies are accumulated
padPix - number of pixels in each direction outside of the axis range over which counts should be gathered
dataSpec - specification for frequency data values
dataStore - data storage

getDataBins

public static double[] getDataBins(Pixel1dPlotter.BinArray binArray,
                                   Axis xAxis,
                                   Kernel1d kernel,
                                   Normalisation norm,
                                   boolean 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 results
xAxis - axis over which counts are accumulated
kernel - smoothing kernel
norm - normalisation mode
cumul - true for 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 -
Returns:
effective extent

createKernel

public static Kernel1d createKernel(Kernel1dShape kernelShape,
                                    BinSizer sizer,
                                    Axis xAxis,
                                    boolean xLog)
Creates a new kernel from configuration items.

Parameters:
kernelShape - functional form
sizer - determines width in data coordinates
xAxis - axis on which samples occur
xLog - true for logarithmic x axis, false for linear
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 coordinates
xAxis - axis on which samples occur
xLog - true for logarithmic x axis, false for linear
Returns:
width in pixel data coordinates represented by sizer, never negative


Copyright © 2015 Central Laboratory of the Research Councils. All Rights Reserved.