Class SpiderWebPlot

java.lang.Object
org.jfree.chart.plot.Plot
org.jfree.chart.plot.SpiderWebPlot
All Implemented Interfaces:
Serializable, Cloneable, EventListener, AnnotationChangeListener, AxisChangeListener, MarkerChangeListener, LegendItemSource, PublicCloneable, DatasetChangeListener

public class SpiderWebPlot extends Plot implements Cloneable, Serializable
A plot that displays data from a CategoryDataset in the form of a "spider web". Multiple series can be plotted on the same axis to allow easy comparison. This plot doesn't support negative values at present.
See Also:
  • Field Details

    • serialVersionUID

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

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

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

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

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

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

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

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

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

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

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

      public static final 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:
    • 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 Paint axisLinePaint
      The paint used to draw the axis lines.
    • axisLineStroke

      private transient Stroke axisLineStroke
      The stroke used to draw the axis lines.
    • dataset

      private CategoryDataset dataset
      The dataset.
    • 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 Shape legendItemShape
      The legend item shape.
    • seriesPaint

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

      private PaintList seriesPaintList
      The series paint list.
    • baseSeriesPaint

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

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

      private PaintList seriesOutlinePaintList
      The series outline paint list.
    • baseSeriesOutlinePaint

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

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

      private StrokeList seriesOutlineStrokeList
      The series outline stroke list.
    • baseSeriesOutlineStroke

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

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

      private transient Paint labelPaint
      The color used to draw the category labels.
    • labelGenerator

      private CategoryItemLabelGenerator labelGenerator
      The label generator.
    • 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 Details

    • 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).
    • SpiderWebPlot

      public SpiderWebPlot(CategoryDataset dataset, TableOrder extract)
      Creates a new spider web plot with the given dataset.
      Parameters:
      dataset - the dataset.
      extract - controls how data is extracted (TableOrder.BY_ROW or TableOrder.BY_COLUMN).
  • Method Details

    • getPlotType

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

      public CategoryDataset getDataset()
      Returns the dataset.
      Returns:
      The dataset (possibly null).
      See Also:
    • 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:
    • isWebFilled

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

      public void setWebFilled(boolean flag)
      Sets the webFilled flag and sends a PlotChangeEvent to all registered listeners.
      Parameters:
      flag - the flag.
      See Also:
    • 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

      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:
    • getDataExtractOrder

      public TableOrder getDataExtractOrder()
      Returns the data extract order (by row or by column).
      Returns:
      The data extract order (never null).
      See Also:
    • 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:
      IllegalArgumentException - if order is null.
      See Also:
    • getHeadPercent

      public double getHeadPercent()
      Returns the head percent (the default value is 0.01).
      Returns:
      The head percent (always > 0).
      See Also:
    • 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:
    • 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

      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:
    • getMaxValue

      public double getMaxValue()
      Returns the maximum value any category axis can take.
      Returns:
      The maximum value.
      See Also:
    • 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:
    • 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

      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:
    • 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

      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:
    • getAxisLabelGap

      public double getAxisLabelGap()
      Returns the axis label gap.
      Returns:
      The axis label gap.
      See Also:
    • 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:
    • getAxisLinePaint

      public 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

      public void setAxisLinePaint(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:
    • getAxisLineStroke

      public 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

      public void setAxisLineStroke(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:
    • getSeriesPaint

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

      public void setSeriesPaint(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

      public 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

      public void setSeriesPaint(int series, 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:
    • getBaseSeriesPaint

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

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

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

      public void setSeriesOutlinePaint(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 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, 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 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(Paint paint)
      Sets the base series paint.
      Parameters:
      paint - the paint (null not permitted).
    • getSeriesOutlineStroke

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

      public void setSeriesOutlineStroke(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 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, 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 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(Stroke stroke)
      Sets the base series stroke.
      Parameters:
      stroke - the stroke (null not permitted).
    • getLegendItemShape

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

      public void setLegendItemShape(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:
    • getLabelFont

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

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

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

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

      public CategoryItemLabelGenerator getLabelGenerator()
      Returns the label generator.
      Returns:
      The label generator (never null).
      See Also:
    • setLabelGenerator

      public void setLabelGenerator(CategoryItemLabelGenerator generator)
      Sets the label generator and sends a PlotChangeEvent to all registered listeners.
      Parameters:
      generator - the generator (null not permitted).
      See Also:
    • getToolTipGenerator

      public CategoryToolTipGenerator getToolTipGenerator()
      Returns the tool tip generator for the plot.
      Returns:
      The tool tip generator (possibly null).
      See Also:
    • setToolTipGenerator

      public void setToolTipGenerator(CategoryToolTipGenerator generator)
      Sets the tool tip generator for the plot and sends a PlotChangeEvent to all registered listeners.
      Parameters:
      generator - the generator (null permitted).
      See Also:
    • getURLGenerator

      public CategoryURLGenerator getURLGenerator()
      Returns the URL generator for the plot.
      Returns:
      The URL generator (possibly null).
      See Also:
    • 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:
    • getLegendItems

      public LegendItemCollection getLegendItems()
      Returns a collection of legend items for the spider web chart.
      Specified by:
      getLegendItems in interface LegendItemSource
      Overrides:
      getLegendItems in class Plot
      Returns:
      The legend items (never null).
    • getWebPoint

      protected Point2D getWebPoint(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(Graphics2D g2, Rectangle2D area, 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(Graphics2D g2, Rectangle2D plotArea, 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 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:
    • drawLabel

      protected void drawLabel(Graphics2D g2, 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 Point2D calculateLabelLocation(Rectangle2D labelBounds, double ascent, 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(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 Object clone() throws 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:
      CloneNotSupportedException - if the plot cannot be cloned for any reason.
    • writeObject

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

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