Class SpiderWebPlot

    • Field Detail

      • serialVersionUID

        private static final long serialVersionUID
        For serialization.
        See Also:
        Constant Field Values
      • DEFAULT_HEAD

        public static final double DEFAULT_HEAD
        The default head radius percent (currently 1%).
        See Also:
        Constant Field Values
      • DEFAULT_AXIS_LABEL_GAP

        public static final double DEFAULT_AXIS_LABEL_GAP
        The default axis label gap (currently 10%).
        See Also:
        Constant Field Values
      • DEFAULT_INTERIOR_GAP

        public static final double DEFAULT_INTERIOR_GAP
        The default interior gap.
        See Also:
        Constant Field Values
      • MAX_INTERIOR_GAP

        public static final double MAX_INTERIOR_GAP
        The maximum interior gap (currently 40%).
        See Also:
        Constant Field Values
      • DEFAULT_START_ANGLE

        public static final double DEFAULT_START_ANGLE
        The default starting angle for the radar chart axes.
        See Also:
        Constant Field Values
      • DEFAULT_LABEL_FONT

        public static final java.awt.Font DEFAULT_LABEL_FONT
        The default series label font.
      • DEFAULT_LABEL_PAINT

        public static final java.awt.Paint DEFAULT_LABEL_PAINT
        The default series label paint.
      • DEFAULT_LABEL_BACKGROUND_PAINT

        public static final java.awt.Paint DEFAULT_LABEL_BACKGROUND_PAINT
        The default series label background paint.
      • DEFAULT_LABEL_OUTLINE_PAINT

        public static final java.awt.Paint DEFAULT_LABEL_OUTLINE_PAINT
        The default series label outline paint.
      • DEFAULT_LABEL_OUTLINE_STROKE

        public static final java.awt.Stroke DEFAULT_LABEL_OUTLINE_STROKE
        The default series label outline stroke.
      • DEFAULT_LABEL_SHADOW_PAINT

        public static final java.awt.Paint DEFAULT_LABEL_SHADOW_PAINT
        The default series label shadow paint.
      • DEFAULT_MAX_VALUE

        public static final double DEFAULT_MAX_VALUE
        The default maximum value plotted - forces the plot to evaluate the maximum from the data passed in
        See Also:
        Constant Field Values
      • headPercent

        protected double headPercent
        The head radius as a percentage of the available drawing area.
      • interiorGap

        private double interiorGap
        The space left around the outside of the plot as a percentage.
      • axisLabelGap

        private double axisLabelGap
        The gap between the labels and the axes as a %age of the radius.
      • axisLinePaint

        private transient java.awt.Paint axisLinePaint
        The paint used to draw the axis lines.
      • axisLineStroke

        private transient java.awt.Stroke axisLineStroke
        The stroke used to draw the axis lines.
      • maxValue

        private double maxValue
        The maximum value we are plotting against on each category axis
      • dataExtractOrder

        private TableOrder dataExtractOrder
        The data extract order (BY_ROW or BY_COLUMN). This denotes whether the data series are stored in rows (in which case the category names are derived from the column keys) or in columns (in which case the category names are derived from the row keys).
      • startAngle

        private double startAngle
        The starting angle.
      • direction

        private Rotation direction
        The direction for drawing the radar axis and plots.
      • legendItemShape

        private transient java.awt.Shape legendItemShape
        The legend item shape.
      • seriesPaint

        private transient java.awt.Paint seriesPaint
        The paint for ALL series (overrides list).
      • seriesPaintList

        private PaintList seriesPaintList
        The series paint list.
      • baseSeriesPaint

        private transient java.awt.Paint baseSeriesPaint
        The base series paint (fallback).
      • seriesOutlinePaint

        private transient java.awt.Paint seriesOutlinePaint
        The outline paint for ALL series (overrides list).
      • seriesOutlinePaintList

        private PaintList seriesOutlinePaintList
        The series outline paint list.
      • baseSeriesOutlinePaint

        private transient java.awt.Paint baseSeriesOutlinePaint
        The base series outline paint (fallback).
      • seriesOutlineStroke

        private transient java.awt.Stroke seriesOutlineStroke
        The outline stroke for ALL series (overrides list).
      • seriesOutlineStrokeList

        private StrokeList seriesOutlineStrokeList
        The series outline stroke list.
      • baseSeriesOutlineStroke

        private transient java.awt.Stroke baseSeriesOutlineStroke
        The base series outline stroke (fallback).
      • labelFont

        private java.awt.Font labelFont
        The font used to display the category labels.
      • labelPaint

        private transient java.awt.Paint labelPaint
        The color used to draw the category labels.
      • webFilled

        private boolean webFilled
        controls if the web polygons are filled or not
      • webFillAlpha

        private float webFillAlpha
        The alpha value of the fill portion of a polygon.
      • toolTipGenerator

        private CategoryToolTipGenerator toolTipGenerator
        A tooltip generator for the plot (null permitted).
      • urlGenerator

        private CategoryURLGenerator urlGenerator
        A URL generator for the plot (null permitted).
    • Constructor Detail

      • SpiderWebPlot

        public SpiderWebPlot()
        Creates a default plot with no dataset.
      • SpiderWebPlot

        public SpiderWebPlot​(CategoryDataset dataset)
        Creates a new spider web plot with the given dataset, with each row representing a series.
        Parameters:
        dataset - the dataset (null permitted).
    • Method Detail

      • getPlotType

        public java.lang.String getPlotType()
        Returns a short string describing the type of plot.
        Specified by:
        getPlotType in class Plot
        Returns:
        The plot type.
      • setDataset

        public void setDataset​(CategoryDataset dataset)
        Sets the dataset used by the plot and sends a PlotChangeEvent to all registered listeners.
        Parameters:
        dataset - the dataset (null permitted).
        See Also:
        getDataset()
      • isWebFilled

        public boolean isWebFilled()
        Method to determine if the web chart is to be filled.
        Returns:
        A boolean.
        See Also:
        setWebFilled(boolean)
      • setWebFilled

        public void setWebFilled​(boolean flag)
        Sets the webFilled flag and sends a PlotChangeEvent to all registered listeners.
        Parameters:
        flag - the flag.
        See Also:
        isWebFilled()
      • getWebFillAlpha

        public float getWebFillAlpha()
        Returns the alpha value for filling a graph (in the range 0.0 to 1.0).
        Returns:
        The alpha value for filling a spider plot polygon.
        See Also:
        setWebFillAlpha(float)
      • setWebFillAlpha

        public void setWebFillAlpha​(float alpha)
        Sets the alpha value for the fill of a plot polygon and sends a PlotChangeEvent to all registered listeners.
        Parameters:
        alpha - the new alpha value. If it is outside [0,1] it will be corrected to fit the range.
        See Also:
        getWebFillAlpha()
      • getDataExtractOrder

        public TableOrder getDataExtractOrder()
        Returns the data extract order (by row or by column).
        Returns:
        The data extract order (never null).
        See Also:
        setDataExtractOrder(TableOrder)
      • setDataExtractOrder

        public void setDataExtractOrder​(TableOrder order)
        Sets the data extract order (by row or by column) and sends a PlotChangeEventto all registered listeners.
        Parameters:
        order - the order (null not permitted).
        Throws:
        java.lang.IllegalArgumentException - if order is null.
        See Also:
        getDataExtractOrder()
      • getHeadPercent

        public double getHeadPercent()
        Returns the head percent (the default value is 0.01).
        Returns:
        The head percent (always > 0).
        See Also:
        setHeadPercent(double)
      • setHeadPercent

        public void setHeadPercent​(double percent)
        Sets the head percent and sends a PlotChangeEvent to all registered listeners. Note that 0.10 is 10 percent.
        Parameters:
        percent - the percent (must be greater than zero).
        See Also:
        getHeadPercent()
      • getStartAngle

        public double getStartAngle()
        Returns the start angle for the first radar axis.
        This is measured in degrees starting from 3 o'clock (Java Arc2D default) and measuring anti-clockwise.
        Returns:
        The start angle.
        See Also:
        setStartAngle(double)
      • setStartAngle

        public void setStartAngle​(double angle)
        Sets the starting angle and sends a PlotChangeEvent to all registered listeners.

        The initial default value is 90 degrees, which corresponds to 12 o'clock. A value of zero corresponds to 3 o'clock... this is the encoding used by Java's Arc2D class.

        Parameters:
        angle - the angle (in degrees).
        See Also:
        getStartAngle()
      • getMaxValue

        public double getMaxValue()
        Returns the maximum value any category axis can take.
        Returns:
        The maximum value.
        See Also:
        setMaxValue(double)
      • setMaxValue

        public void setMaxValue​(double value)
        Sets the maximum value any category axis can take and sends a PlotChangeEvent to all registered listeners.
        Parameters:
        value - the maximum value.
        See Also:
        getMaxValue()
      • getDirection

        public Rotation getDirection()
        Returns the direction in which the radar axes are drawn (clockwise or anti-clockwise).
        Returns:
        The direction (never null).
        See Also:
        setDirection(Rotation)
      • setDirection

        public void setDirection​(Rotation direction)
        Sets the direction in which the radar axes are drawn and sends a PlotChangeEvent to all registered listeners.
        Parameters:
        direction - the direction (null not permitted).
        See Also:
        getDirection()
      • getInteriorGap

        public double getInteriorGap()
        Returns the interior gap, measured as a percentage of the available drawing space.
        Returns:
        The gap (as a percentage of the available drawing space).
        See Also:
        setInteriorGap(double)
      • setInteriorGap

        public void setInteriorGap​(double percent)
        Sets the interior gap and sends a PlotChangeEvent to all registered listeners. This controls the space between the edges of the plot and the plot area itself (the region where the axis labels appear).
        Parameters:
        percent - the gap (as a percentage of the available drawing space).
        See Also:
        getInteriorGap()
      • getAxisLabelGap

        public double getAxisLabelGap()
        Returns the axis label gap.
        Returns:
        The axis label gap.
        See Also:
        setAxisLabelGap(double)
      • setAxisLabelGap

        public void setAxisLabelGap​(double gap)
        Sets the axis label gap and sends a PlotChangeEvent to all registered listeners.
        Parameters:
        gap - the gap.
        See Also:
        getAxisLabelGap()
      • getAxisLinePaint

        public java.awt.Paint getAxisLinePaint()
        Returns the paint used to draw the axis lines.
        Returns:
        The paint used to draw the axis lines (never null).
        See Also:
        setAxisLinePaint(Paint), getAxisLineStroke()
      • setAxisLinePaint

        public void setAxisLinePaint​(java.awt.Paint paint)
        Sets the paint used to draw the axis lines and sends a PlotChangeEvent to all registered listeners.
        Parameters:
        paint - the paint (null not permitted).
        See Also:
        getAxisLinePaint()
      • getAxisLineStroke

        public java.awt.Stroke getAxisLineStroke()
        Returns the stroke used to draw the axis lines.
        Returns:
        The stroke used to draw the axis lines (never null).
        See Also:
        setAxisLineStroke(Stroke), getAxisLinePaint()
      • setAxisLineStroke

        public void setAxisLineStroke​(java.awt.Stroke stroke)
        Sets the stroke used to draw the axis lines and sends a PlotChangeEvent to all registered listeners.
        Parameters:
        stroke - the stroke (null not permitted).
        See Also:
        getAxisLineStroke()
      • getSeriesPaint

        public java.awt.Paint getSeriesPaint()
        Returns the paint for ALL series in the plot.
        Returns:
        The paint (possibly null).
        See Also:
        setSeriesPaint(Paint)
      • setSeriesPaint

        public void setSeriesPaint​(java.awt.Paint paint)
        Sets the paint for ALL series in the plot. If this is set to null, then a list of paints is used instead (to allow different colors to be used for each series of the radar group).
        Parameters:
        paint - the paint (null permitted).
        See Also:
        getSeriesPaint()
      • getSeriesPaint

        public java.awt.Paint getSeriesPaint​(int series)
        Returns the paint for the specified series.
        Parameters:
        series - the series index (zero-based).
        Returns:
        The paint (never null).
        See Also:
        setSeriesPaint(int, Paint)
      • setSeriesPaint

        public void setSeriesPaint​(int series,
                                   java.awt.Paint paint)
        Sets the paint used to fill a series of the radar and sends a PlotChangeEvent to all registered listeners.
        Parameters:
        series - the series index (zero-based).
        paint - the paint (null permitted).
        See Also:
        getSeriesPaint(int)
      • getBaseSeriesPaint

        public java.awt.Paint getBaseSeriesPaint()
        Returns the base series paint. This is used when no other paint is available.
        Returns:
        The paint (never null).
        See Also:
        setBaseSeriesPaint(Paint)
      • setBaseSeriesPaint

        public void setBaseSeriesPaint​(java.awt.Paint paint)
        Sets the base series paint.
        Parameters:
        paint - the paint (null not permitted).
        See Also:
        getBaseSeriesPaint()
      • getSeriesOutlinePaint

        public java.awt.Paint getSeriesOutlinePaint()
        Returns the outline paint for ALL series in the plot.
        Returns:
        The paint (possibly null).
      • setSeriesOutlinePaint

        public void setSeriesOutlinePaint​(java.awt.Paint paint)
        Sets the outline paint for ALL series in the plot. If this is set to null, then a list of paints is used instead (to allow different colors to be used for each series).
        Parameters:
        paint - the paint (null permitted).
      • getSeriesOutlinePaint

        public java.awt.Paint getSeriesOutlinePaint​(int series)
        Returns the paint for the specified series.
        Parameters:
        series - the series index (zero-based).
        Returns:
        The paint (never null).
      • setSeriesOutlinePaint

        public void setSeriesOutlinePaint​(int series,
                                          java.awt.Paint paint)
        Sets the paint used to fill a series of the radar and sends a PlotChangeEvent to all registered listeners.
        Parameters:
        series - the series index (zero-based).
        paint - the paint (null permitted).
      • getBaseSeriesOutlinePaint

        public java.awt.Paint getBaseSeriesOutlinePaint()
        Returns the base series paint. This is used when no other paint is available.
        Returns:
        The paint (never null).
      • setBaseSeriesOutlinePaint

        public void setBaseSeriesOutlinePaint​(java.awt.Paint paint)
        Sets the base series paint.
        Parameters:
        paint - the paint (null not permitted).
      • getSeriesOutlineStroke

        public java.awt.Stroke getSeriesOutlineStroke()
        Returns the outline stroke for ALL series in the plot.
        Returns:
        The stroke (possibly null).
      • setSeriesOutlineStroke

        public void setSeriesOutlineStroke​(java.awt.Stroke stroke)
        Sets the outline stroke for ALL series in the plot. If this is set to null, then a list of paints is used instead (to allow different colors to be used for each series).
        Parameters:
        stroke - the stroke (null permitted).
      • getSeriesOutlineStroke

        public java.awt.Stroke getSeriesOutlineStroke​(int series)
        Returns the stroke for the specified series.
        Parameters:
        series - the series index (zero-based).
        Returns:
        The stroke (never null).
      • setSeriesOutlineStroke

        public void setSeriesOutlineStroke​(int series,
                                           java.awt.Stroke stroke)
        Sets the stroke used to fill a series of the radar and sends a PlotChangeEvent to all registered listeners.
        Parameters:
        series - the series index (zero-based).
        stroke - the stroke (null permitted).
      • getBaseSeriesOutlineStroke

        public java.awt.Stroke getBaseSeriesOutlineStroke()
        Returns the base series stroke. This is used when no other stroke is available.
        Returns:
        The stroke (never null).
      • setBaseSeriesOutlineStroke

        public void setBaseSeriesOutlineStroke​(java.awt.Stroke stroke)
        Sets the base series stroke.
        Parameters:
        stroke - the stroke (null not permitted).
      • getLegendItemShape

        public java.awt.Shape getLegendItemShape()
        Returns the shape used for legend items.
        Returns:
        The shape (never null).
        See Also:
        setLegendItemShape(Shape)
      • setLegendItemShape

        public void setLegendItemShape​(java.awt.Shape shape)
        Sets the shape used for legend items and sends a PlotChangeEvent to all registered listeners.
        Parameters:
        shape - the shape (null not permitted).
        See Also:
        getLegendItemShape()
      • getLabelFont

        public java.awt.Font getLabelFont()
        Returns the series label font.
        Returns:
        The font (never null).
        See Also:
        setLabelFont(Font)
      • setLabelFont

        public void setLabelFont​(java.awt.Font font)
        Sets the series label font and sends a PlotChangeEvent to all registered listeners.
        Parameters:
        font - the font (null not permitted).
        See Also:
        getLabelFont()
      • getLabelPaint

        public java.awt.Paint getLabelPaint()
        Returns the series label paint.
        Returns:
        The paint (never null).
        See Also:
        setLabelPaint(Paint)
      • setLabelPaint

        public void setLabelPaint​(java.awt.Paint paint)
        Sets the series label paint and sends a PlotChangeEvent to all registered listeners.
        Parameters:
        paint - the paint (null not permitted).
        See Also:
        getLabelPaint()
      • setURLGenerator

        public void setURLGenerator​(CategoryURLGenerator generator)
        Sets the URL generator for the plot and sends a PlotChangeEvent to all registered listeners.
        Parameters:
        generator - the generator (null permitted).
        See Also:
        getURLGenerator()
      • getWebPoint

        protected java.awt.geom.Point2D getWebPoint​(java.awt.geom.Rectangle2D bounds,
                                                    double angle,
                                                    double length)
        Returns a cartesian point from a polar angle, length and bounding box
        Parameters:
        bounds - the area inside which the point needs to be.
        angle - the polar angle, in degrees.
        length - the relative length. Given in percent of maximum extend.
        Returns:
        The cartesian point.
      • draw

        public void draw​(java.awt.Graphics2D g2,
                         java.awt.geom.Rectangle2D area,
                         java.awt.geom.Point2D anchor,
                         PlotState parentState,
                         PlotRenderingInfo info)
        Draws the plot on a Java 2D graphics device (such as the screen or a printer).
        Specified by:
        draw in class Plot
        Parameters:
        g2 - the graphics device.
        area - the area within which the plot should be drawn.
        anchor - the anchor point (null permitted).
        parentState - the state from the parent plot, if there is one.
        info - collects info about the drawing.
      • calculateMaxValue

        private void calculateMaxValue​(int seriesCount,
                                       int catCount)
        loop through each of the series to get the maximum value on each category axis
        Parameters:
        seriesCount - the number of series
        catCount - the number of categories
      • drawRadarPoly

        protected void drawRadarPoly​(java.awt.Graphics2D g2,
                                     java.awt.geom.Rectangle2D plotArea,
                                     java.awt.geom.Point2D centre,
                                     PlotRenderingInfo info,
                                     int series,
                                     int catCount,
                                     double headH,
                                     double headW)
        Draws a radar plot polygon.
        Parameters:
        g2 - the graphics device.
        plotArea - the area we are plotting in (already adjusted).
        centre - the centre point of the radar axes
        info - chart rendering info.
        series - the series within the dataset we are plotting
        catCount - the number of categories per radar plot
        headH - the data point height
        headW - the data point width
      • getPlotValue

        protected java.lang.Number getPlotValue​(int series,
                                                int cat)
        Returns the value to be plotted at the intersection of the series and the category. This allows us to plot BY_ROW or BY_COLUMN which basically is just reversing the definition of the categories and data series being plotted.
        Parameters:
        series - the series to be plotted.
        cat - the category within the series to be plotted.
        Returns:
        The value to be plotted (possibly null).
        See Also:
        getDataExtractOrder()
      • drawLabel

        protected void drawLabel​(java.awt.Graphics2D g2,
                                 java.awt.geom.Rectangle2D plotArea,
                                 double value,
                                 int cat,
                                 double startAngle,
                                 double extent)
        Draws the label for one axis.
        Parameters:
        g2 - the graphics device.
        plotArea - the plot area
        value - the value of the label (ignored).
        cat - the category (zero-based index).
        startAngle - the starting angle.
        extent - the extent of the arc.
      • calculateLabelLocation

        protected java.awt.geom.Point2D calculateLabelLocation​(java.awt.geom.Rectangle2D labelBounds,
                                                               double ascent,
                                                               java.awt.geom.Rectangle2D plotArea,
                                                               double startAngle)
        Returns the location for a label
        Parameters:
        labelBounds - the label bounds.
        ascent - the ascent (height of font).
        plotArea - the plot area
        startAngle - the start angle for the pie series.
        Returns:
        The location for a label.
      • equals

        public boolean equals​(java.lang.Object obj)
        Tests this plot for equality with an arbitrary object.
        Overrides:
        equals in class Plot
        Parameters:
        obj - the object (null permitted).
        Returns:
        A boolean.
      • clone

        public java.lang.Object clone()
                               throws java.lang.CloneNotSupportedException
        Returns a clone of this plot.
        Specified by:
        clone in interface PublicCloneable
        Overrides:
        clone in class Plot
        Returns:
        A clone of this plot.
        Throws:
        java.lang.CloneNotSupportedException - if the plot cannot be cloned for any reason.
      • writeObject

        private void writeObject​(java.io.ObjectOutputStream stream)
                          throws java.io.IOException
        Provides serialization support.
        Parameters:
        stream - the output stream.
        Throws:
        java.io.IOException - if there is an I/O error.
      • readObject

        private void readObject​(java.io.ObjectInputStream stream)
                         throws java.io.IOException,
                                java.lang.ClassNotFoundException
        Provides serialization support.
        Parameters:
        stream - the input stream.
        Throws:
        java.io.IOException - if there is an I/O error.
        java.lang.ClassNotFoundException - if there is a classpath problem.