Package org.jfree.chart.renderer.xy
Class DensityPlotXYItemRenderer
- java.lang.Object
-
- org.jfree.chart.renderer.AbstractRenderer
-
- org.jfree.chart.renderer.xy.AbstractXYItemRenderer
-
- org.jfree.chart.renderer.xy.XYLineAndShapeRenderer
-
- org.jfree.chart.renderer.xy.DensityPlotXYItemRenderer
-
- All Implemented Interfaces:
Serializable,Cloneable,EventListener,org.jfree.chart.event.AnnotationChangeListener,org.jfree.chart.LegendItemSource,org.jfree.chart.renderer.xy.XYItemRenderer,org.jfree.chart.util.PublicCloneable
public class DensityPlotXYItemRenderer extends org.jfree.chart.renderer.xy.XYLineAndShapeRendererA custom XYItemRenderer that colors the individual data points (shapes) based on the calculated data density (either Binning or KDE). It extends XYLineAndShapeRenderer and overrides getItemPaint to inject the density-derived color for each point.- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description protected org.jfree.data.xy.XYDatasetm_CurrentDatasetthe current dataset.protected booleanm_DensityCalculatedwhether the density was calculated.protected KernelDensityEstimationm_KDEfor calculating the density.protected org.jfree.chart.renderer.PaintScalem_PaintScalethe paintscale in use.protected KernelDensityEstimation.RenderStatem_RenderStatethe render state.
-
Constructor Summary
Constructors Constructor Description DensityPlotXYItemRenderer(int numBins, ColorGradientGenerator generator, KernelDensityEstimation.Mode mode, double bandwidth)Constructs a new density plot renderer.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voidcalculateDensity(org.jfree.data.xy.XYDataset dataset, org.jfree.chart.plot.XYPlot plot)Calculates the 2D density map from the dataset using the configured mode.protected org.jfree.chart.renderer.PaintScalecreatePaintScale(double min, double max)Creates the paintscale to use.voiddrawItem(Graphics2D g2, org.jfree.chart.renderer.xy.XYItemRendererState state, Rectangle2D dataArea, org.jfree.chart.plot.PlotRenderingInfo info, org.jfree.chart.plot.XYPlot plot, org.jfree.chart.axis.ValueAxis domainAxis, org.jfree.chart.axis.ValueAxis rangeAxis, org.jfree.data.xy.XYDataset dataset, int series, int item, org.jfree.chart.plot.CrosshairState crosshairState, int pass)The drawItem method now only ensures the density map is calculated and then delegates to the superclass to draw the shapes using our custom getItemPaint.doublegetBandwidth()Returns the bandwidth (sigma) used for KDE.KernelDensityEstimation.ModegetDensityMode()Returns the current density calculation mode (BINNING or KDE).ColorGradientGeneratorgetGenerator()Returns the current colors being used.PaintgetItemPaint(int series, int item)Overrides the base method to provide the density-derived color for the shape/line.voidinvalidateDensityMap()Resets the calculation flag.voidsetBandwidth(double bandwidth)Sets the bandwidth (sigma) for the Gaussian kernel.voidsetDensityMode(KernelDensityEstimation.Mode value)Sets the density calculation mode.voidsetGenerator(ColorGradientGenerator value)Sets the colors to use.-
Methods inherited from class org.jfree.chart.renderer.xy.XYLineAndShapeRenderer
clone, drawFirstPassShape, drawPrimaryLine, drawPrimaryLineAsPath, drawSecondaryPass, equals, getDefaultLinesVisible, getDefaultShapesFilled, getDefaultShapesVisible, getDrawOutlines, getDrawSeriesLineAsPath, getItemLineVisible, getItemShapeFilled, getItemShapeVisible, getLegendItem, getLegendLine, getPassCount, getSeriesLinesVisible, getSeriesShapesFilled, getSeriesShapesVisible, getUseFillPaint, getUseOutlinePaint, hashCode, initialise, isItemPass, isLinePass, setDefaultLinesVisible, setDefaultShapesFilled, setDefaultShapesVisible, setDrawOutlines, setDrawSeriesLineAsPath, setLegendLine, setSeriesLinesVisible, setSeriesLinesVisible, setSeriesShapesFilled, setSeriesShapesFilled, setSeriesShapesVisible, setSeriesShapesVisible, setUseFillPaint, setUseOutlinePaint
-
Methods inherited from class org.jfree.chart.renderer.xy.AbstractXYItemRenderer
addAnnotation, addAnnotation, addEntity, annotationChanged, beginElementGroup, calculateDomainMarkerTextAnchorPoint, drawAnnotations, drawDomainLine, drawDomainMarker, drawItemLabel, drawRangeLine, drawRangeMarker, fillDomainGridBand, fillRangeGridBand, findDomainBounds, findDomainBounds, findRangeBounds, findRangeBounds, getAnnotations, getDefaultItemLabelGenerator, getDefaultToolTipGenerator, getDrawingSupplier, getItemLabelGenerator, getLegendItemLabelGenerator, getLegendItems, getLegendItemToolTipGenerator, getLegendItemURLGenerator, getPlot, getSeriesItemLabelGenerator, getSeriesToolTipGenerator, getToolTipGenerator, getURLGenerator, lineTo, moveTo, removeAnnotation, removeAnnotations, setDefaultItemLabelGenerator, setDefaultToolTipGenerator, setLegendItemLabelGenerator, setLegendItemToolTipGenerator, setLegendItemURLGenerator, setPlot, setSeriesItemLabelGenerator, setSeriesToolTipGenerator, setURLGenerator, updateCrosshairValues
-
Methods inherited from class org.jfree.chart.renderer.AbstractRenderer
addChangeListener, beginElementGroup, calculateLabelAnchorPoint, clearSeriesPaints, clearSeriesStrokes, endElementGroup, fireChangeEvent, getAutoPopulateSeriesFillPaint, getAutoPopulateSeriesOutlinePaint, getAutoPopulateSeriesOutlineStroke, getAutoPopulateSeriesPaint, getAutoPopulateSeriesShape, getAutoPopulateSeriesStroke, getDataBoundsIncludesVisibleSeriesOnly, getDefaultCreateEntities, getDefaultEntityRadius, getDefaultFillPaint, getDefaultItemLabelFont, getDefaultItemLabelPaint, getDefaultItemLabelsVisible, getDefaultLegendShape, getDefaultLegendTextFont, getDefaultLegendTextPaint, getDefaultNegativeItemLabelPosition, getDefaultOutlinePaint, getDefaultOutlineStroke, getDefaultPaint, getDefaultPositiveItemLabelPosition, getDefaultSeriesVisible, getDefaultSeriesVisibleInLegend, getDefaultShape, getDefaultStroke, getItemCreateEntity, getItemFillPaint, getItemLabelAnchorOffset, getItemLabelFont, getItemLabelInsets, getItemLabelPaint, getItemOutlinePaint, getItemOutlineStroke, getItemShape, getItemStroke, getItemVisible, getLegendShape, getLegendTextFont, getLegendTextPaint, getNegativeItemLabelPosition, getPositiveItemLabelPosition, getSeriesCreateEntities, getSeriesFillPaint, getSeriesItemLabelFont, getSeriesItemLabelPaint, getSeriesNegativeItemLabelPosition, getSeriesOutlinePaint, getSeriesOutlineStroke, getSeriesPaint, getSeriesPositiveItemLabelPosition, getSeriesShape, getSeriesStroke, getSeriesVisible, getSeriesVisibleInLegend, getTreatLegendShapeAsLine, hasListener, isComputeItemLabelContrastColor, isItemLabelVisible, isSeriesItemLabelsVisible, isSeriesVisible, isSeriesVisibleInLegend, lookupLegendShape, lookupLegendTextFont, lookupLegendTextPaint, lookupSeriesFillPaint, lookupSeriesOutlinePaint, lookupSeriesOutlineStroke, lookupSeriesPaint, lookupSeriesShape, lookupSeriesStroke, notifyListeners, removeChangeListener, setAutoPopulateSeriesFillPaint, setAutoPopulateSeriesOutlinePaint, setAutoPopulateSeriesOutlineStroke, setAutoPopulateSeriesPaint, setAutoPopulateSeriesShape, setAutoPopulateSeriesStroke, setComputeItemLabelContrastColor, setDataBoundsIncludesVisibleSeriesOnly, setDefaultCreateEntities, setDefaultCreateEntities, setDefaultEntityRadius, setDefaultFillPaint, setDefaultFillPaint, setDefaultItemLabelFont, setDefaultItemLabelFont, setDefaultItemLabelPaint, setDefaultItemLabelPaint, setDefaultItemLabelsVisible, setDefaultItemLabelsVisible, setDefaultLegendShape, setDefaultLegendTextFont, setDefaultLegendTextPaint, setDefaultNegativeItemLabelPosition, setDefaultNegativeItemLabelPosition, setDefaultOutlinePaint, setDefaultOutlinePaint, setDefaultOutlineStroke, setDefaultOutlineStroke, setDefaultPaint, setDefaultPaint, setDefaultPositiveItemLabelPosition, setDefaultPositiveItemLabelPosition, setDefaultSeriesVisible, setDefaultSeriesVisible, setDefaultSeriesVisibleInLegend, setDefaultSeriesVisibleInLegend, setDefaultShape, setDefaultShape, setDefaultStroke, setDefaultStroke, setItemLabelAnchorOffset, setItemLabelInsets, setLegendShape, setLegendTextFont, setLegendTextPaint, setSeriesCreateEntities, setSeriesCreateEntities, setSeriesFillPaint, setSeriesFillPaint, setSeriesItemLabelFont, setSeriesItemLabelFont, setSeriesItemLabelPaint, setSeriesItemLabelPaint, setSeriesItemLabelsVisible, setSeriesItemLabelsVisible, setSeriesItemLabelsVisible, setSeriesNegativeItemLabelPosition, setSeriesNegativeItemLabelPosition, setSeriesOutlinePaint, setSeriesOutlinePaint, setSeriesOutlineStroke, setSeriesOutlineStroke, setSeriesPaint, setSeriesPaint, setSeriesPositiveItemLabelPosition, setSeriesPositiveItemLabelPosition, setSeriesShape, setSeriesShape, setSeriesStroke, setSeriesStroke, setSeriesVisible, setSeriesVisible, setSeriesVisibleInLegend, setSeriesVisibleInLegend, setTreatLegendShapeAsLine
-
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.jfree.chart.renderer.xy.XYItemRenderer
addAnnotation, addAnnotation, addChangeListener, drawAnnotations, drawDomainLine, drawDomainMarker, drawRangeLine, drawRangeMarker, fillDomainGridBand, fillRangeGridBand, findDomainBounds, findRangeBounds, getDefaultCreateEntities, getDefaultFillPaint, getDefaultItemLabelFont, getDefaultItemLabelGenerator, getDefaultItemLabelPaint, getDefaultItemLabelsVisible, getDefaultNegativeItemLabelPosition, getDefaultOutlinePaint, getDefaultOutlineStroke, getDefaultPaint, getDefaultPositiveItemLabelPosition, getDefaultSeriesVisible, getDefaultSeriesVisibleInLegend, getDefaultShape, getDefaultStroke, getDefaultToolTipGenerator, getItemCreateEntity, getItemFillPaint, getItemLabelFont, getItemLabelGenerator, getItemLabelPaint, getItemOutlinePaint, getItemOutlineStroke, getItemShape, getItemStroke, getItemVisible, getLegendItemLabelGenerator, getNegativeItemLabelPosition, getPlot, getPositiveItemLabelPosition, getSeriesCreateEntities, getSeriesFillPaint, getSeriesItemLabelFont, getSeriesItemLabelGenerator, getSeriesItemLabelPaint, getSeriesNegativeItemLabelPosition, getSeriesOutlinePaint, getSeriesOutlineStroke, getSeriesPaint, getSeriesPositiveItemLabelPosition, getSeriesShape, getSeriesStroke, getSeriesToolTipGenerator, getSeriesVisible, getSeriesVisibleInLegend, getToolTipGenerator, getURLGenerator, isItemLabelVisible, isSeriesItemLabelsVisible, isSeriesVisible, isSeriesVisibleInLegend, removeAnnotation, removeAnnotations, removeChangeListener, setDefaultCreateEntities, setDefaultCreateEntities, setDefaultFillPaint, setDefaultFillPaint, setDefaultItemLabelFont, setDefaultItemLabelGenerator, setDefaultItemLabelPaint, setDefaultItemLabelsVisible, setDefaultItemLabelsVisible, setDefaultNegativeItemLabelPosition, setDefaultNegativeItemLabelPosition, setDefaultOutlinePaint, setDefaultOutlinePaint, setDefaultOutlineStroke, setDefaultOutlineStroke, setDefaultPaint, setDefaultPaint, setDefaultPositiveItemLabelPosition, setDefaultPositiveItemLabelPosition, setDefaultSeriesVisible, setDefaultSeriesVisible, setDefaultSeriesVisibleInLegend, setDefaultSeriesVisibleInLegend, setDefaultShape, setDefaultShape, setDefaultStroke, setDefaultStroke, setDefaultToolTipGenerator, setLegendItemLabelGenerator, setPlot, setSeriesCreateEntities, setSeriesCreateEntities, setSeriesFillPaint, setSeriesFillPaint, setSeriesItemLabelFont, setSeriesItemLabelGenerator, setSeriesItemLabelPaint, setSeriesItemLabelsVisible, setSeriesItemLabelsVisible, setSeriesItemLabelsVisible, setSeriesNegativeItemLabelPosition, setSeriesNegativeItemLabelPosition, setSeriesOutlinePaint, setSeriesOutlinePaint, setSeriesOutlineStroke, setSeriesOutlineStroke, setSeriesPaint, setSeriesPaint, setSeriesPositiveItemLabelPosition, setSeriesPositiveItemLabelPosition, setSeriesShape, setSeriesShape, setSeriesStroke, setSeriesStroke, setSeriesToolTipGenerator, setSeriesVisible, setSeriesVisible, setSeriesVisibleInLegend, setSeriesVisibleInLegend, setURLGenerator
-
-
-
-
Field Detail
-
m_PaintScale
protected org.jfree.chart.renderer.PaintScale m_PaintScale
the paintscale in use.
-
m_DensityCalculated
protected boolean m_DensityCalculated
whether the density was calculated.
-
m_RenderState
protected KernelDensityEstimation.RenderState m_RenderState
the render state.
-
m_CurrentDataset
protected org.jfree.data.xy.XYDataset m_CurrentDataset
the current dataset.
-
m_KDE
protected KernelDensityEstimation m_KDE
for calculating the density.
-
-
Constructor Detail
-
DensityPlotXYItemRenderer
public DensityPlotXYItemRenderer(int numBins, ColorGradientGenerator generator, KernelDensityEstimation.Mode mode, double bandwidth)Constructs a new density plot renderer.- Parameters:
numBins- The number of bins to divide the domain axes into.generator- the color generatormode- The initial density calculation mode (HISTOGRAM or KDE).
-
-
Method Detail
-
createPaintScale
protected org.jfree.chart.renderer.PaintScale createPaintScale(double min, double max)Creates the paintscale to use.- Parameters:
min- the minimum to usemax- the maximum to use- Returns:
- the scale
-
calculateDensity
protected void calculateDensity(org.jfree.data.xy.XYDataset dataset, org.jfree.chart.plot.XYPlot plot)Calculates the 2D density map from the dataset using the configured mode. This method also stores the axis bounds for use in getItemPaint.- Parameters:
dataset- The dataset containing the (x, y) points.plot- The plot, used to get axis information.
-
invalidateDensityMap
public void invalidateDensityMap()
Resets the calculation flag. Should be called when the dataset, axes, or mode changes.
-
getItemPaint
public Paint getItemPaint(int series, int item)
Overrides the base method to provide the density-derived color for the shape/line. This method is called by the superclass during its drawItem implementation. * @param series the series index.- Specified by:
getItemPaintin interfaceorg.jfree.chart.renderer.xy.XYItemRenderer- Overrides:
getItemPaintin classorg.jfree.chart.renderer.AbstractRenderer- Parameters:
item- the item index.- Returns:
- The Paint object corresponding to the item's density.
-
drawItem
public void drawItem(Graphics2D g2, org.jfree.chart.renderer.xy.XYItemRendererState state, Rectangle2D dataArea, org.jfree.chart.plot.PlotRenderingInfo info, org.jfree.chart.plot.XYPlot plot, org.jfree.chart.axis.ValueAxis domainAxis, org.jfree.chart.axis.ValueAxis rangeAxis, org.jfree.data.xy.XYDataset dataset, int series, int item, org.jfree.chart.plot.CrosshairState crosshairState, int pass)
The drawItem method now only ensures the density map is calculated and then delegates to the superclass to draw the shapes using our custom getItemPaint. (Signature preserved for compatibility)- Specified by:
drawItemin interfaceorg.jfree.chart.renderer.xy.XYItemRenderer- Overrides:
drawItemin classorg.jfree.chart.renderer.xy.XYLineAndShapeRenderer
-
getGenerator
public ColorGradientGenerator getGenerator()
Returns the current colors being used.- Returns:
- the colors
-
setGenerator
public void setGenerator(ColorGradientGenerator value)
Sets the colors to use.- Parameters:
value- the colors
-
getDensityMode
public KernelDensityEstimation.Mode getDensityMode()
Returns the current density calculation mode (BINNING or KDE).- Returns:
- The density mode.
-
setDensityMode
public void setDensityMode(KernelDensityEstimation.Mode value)
Sets the density calculation mode.- Parameters:
value- The new density mode.
-
getBandwidth
public double getBandwidth()
Returns the bandwidth (sigma) used for KDE. Ignored in BINNING mode.'- Returns:
- The bandwidth.
-
setBandwidth
public void setBandwidth(double bandwidth)
Sets the bandwidth (sigma) for the Gaussian kernel. Requires invalidation.- Parameters:
bandwidth- The new bandwidth. Must be greater than 0.
-
-