Class 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.XYLineAndShapeRenderer
    A 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
    • Nested Class Summary

      • Nested classes/interfaces inherited from class org.jfree.chart.renderer.xy.XYLineAndShapeRenderer

        org.jfree.chart.renderer.xy.XYLineAndShapeRenderer.State
    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected org.jfree.data.xy.XYDataset m_CurrentDataset
      the current dataset.
      protected boolean m_DensityCalculated
      whether the density was calculated.
      protected KernelDensityEstimation m_KDE
      for calculating the density.
      protected org.jfree.chart.renderer.PaintScale m_PaintScale
      the paintscale in use.
      protected KernelDensityEstimation.RenderState m_RenderState
      the render state.
      • Fields inherited from class org.jfree.chart.renderer.AbstractRenderer

        DEFAULT_ITEM_LABEL_INSETS, DEFAULT_OUTLINE_PAINT, DEFAULT_OUTLINE_STROKE, DEFAULT_PAINT, DEFAULT_SHAPE, DEFAULT_STROKE, DEFAULT_VALUE_LABEL_FONT, DEFAULT_VALUE_LABEL_PAINT, ZERO
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      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.
      protected org.jfree.chart.renderer.PaintScale createPaintScale​(double min, double max)
      Creates the paintscale to use.
      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.
      double getBandwidth()
      Returns the bandwidth (sigma) used for KDE.
      KernelDensityEstimation.Mode getDensityMode()
      Returns the current density calculation mode (BINNING or KDE).
      ColorGradientGenerator getGenerator()
      Returns the current colors being used.
      Paint getItemPaint​(int series, int item)
      Overrides the base method to provide the density-derived color for the shape/line.
      void invalidateDensityMap()
      Resets the calculation flag.
      void setBandwidth​(double bandwidth)
      Sets the bandwidth (sigma) for the Gaussian kernel.
      void setDensityMode​(KernelDensityEstimation.Mode value)
      Sets the density calculation mode.
      void setGenerator​(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 interface org.jfree.chart.LegendItemSource

        getLegendItems
      • 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_CurrentDataset

        protected org.jfree.data.xy.XYDataset m_CurrentDataset
        the current dataset.
    • 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 generator
        mode - 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 use
        max - 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:
        getItemPaint in interface org.jfree.chart.renderer.xy.XYItemRenderer
        Overrides:
        getItemPaint in class org.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:
        drawItem in interface org.jfree.chart.renderer.xy.XYItemRenderer
        Overrides:
        drawItem in class org.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.