Package org.jfree.chart.plot
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:
- Serialized Form
-
Field Summary
Fields Modifier and Type Field Description static double
DEFAULT_AXIS_LABEL_GAP
The default axis label gap (currently 10%).static double
DEFAULT_HEAD
The default head radius percent (currently 1%).static double
DEFAULT_INTERIOR_GAP
The default interior gap.static Paint
DEFAULT_LABEL_BACKGROUND_PAINT
The default series label background paint.static Font
DEFAULT_LABEL_FONT
The default series label font.static Paint
DEFAULT_LABEL_OUTLINE_PAINT
The default series label outline paint.static Stroke
DEFAULT_LABEL_OUTLINE_STROKE
The default series label outline stroke.static Paint
DEFAULT_LABEL_PAINT
The default series label paint.static Paint
DEFAULT_LABEL_SHADOW_PAINT
The default series label shadow paint.static double
DEFAULT_MAX_VALUE
The default maximum value plotted - forces the plot to evaluate the maximum from the data passed instatic double
DEFAULT_START_ANGLE
The default starting angle for the radar chart axes.protected double
headPercent
The head radius as a percentage of the available drawing area.static double
MAX_INTERIOR_GAP
The maximum interior gap (currently 40%).Fields inherited from class org.jfree.chart.plot.Plot
DEFAULT_BACKGROUND_ALPHA, DEFAULT_BACKGROUND_PAINT, DEFAULT_FOREGROUND_ALPHA, DEFAULT_INSETS, DEFAULT_LEGEND_ITEM_BOX, DEFAULT_LEGEND_ITEM_CIRCLE, DEFAULT_OUTLINE_PAINT, DEFAULT_OUTLINE_STROKE, MINIMUM_HEIGHT_TO_DRAW, MINIMUM_WIDTH_TO_DRAW, ZERO
-
Constructor Summary
Constructors Constructor Description SpiderWebPlot()
Creates a default plot with no dataset.SpiderWebPlot(CategoryDataset dataset)
Creates a new spider web plot with the given dataset, with each row representing a series.SpiderWebPlot(CategoryDataset dataset, TableOrder extract)
Creates a new spider web plot with the given dataset. -
Method Summary
Modifier and Type Method Description protected Point2D
calculateLabelLocation(Rectangle2D labelBounds, double ascent, Rectangle2D plotArea, double startAngle)
Returns the location for a labelObject
clone()
Returns a clone of this plot.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).protected void
drawLabel(Graphics2D g2, Rectangle2D plotArea, double value, int cat, double startAngle, double extent)
Draws the label for one axis.protected void
drawRadarPoly(Graphics2D g2, Rectangle2D plotArea, Point2D centre, PlotRenderingInfo info, int series, int catCount, double headH, double headW)
Draws a radar plot polygon.boolean
equals(Object obj)
Tests this plot for equality with an arbitrary object.double
getAxisLabelGap()
Returns the axis label gap.Paint
getAxisLinePaint()
Returns the paint used to draw the axis lines.Stroke
getAxisLineStroke()
Returns the stroke used to draw the axis lines.Paint
getBaseSeriesOutlinePaint()
Returns the base series paint.Stroke
getBaseSeriesOutlineStroke()
Returns the base series stroke.Paint
getBaseSeriesPaint()
Returns the base series paint.TableOrder
getDataExtractOrder()
Returns the data extract order (by row or by column).CategoryDataset
getDataset()
Returns the dataset.Rotation
getDirection()
Returns the direction in which the radar axes are drawn (clockwise or anti-clockwise).double
getHeadPercent()
Returns the head percent (the default value is 0.01).double
getInteriorGap()
Returns the interior gap, measured as a percentage of the available drawing space.Font
getLabelFont()
Returns the series label font.CategoryItemLabelGenerator
getLabelGenerator()
Returns the label generator.Paint
getLabelPaint()
Returns the series label paint.LegendItemCollection
getLegendItems()
Returns a collection of legend items for the spider web chart.Shape
getLegendItemShape()
Returns the shape used for legend items.double
getMaxValue()
Returns the maximum value any category axis can take.String
getPlotType()
Returns a short string describing the type of plot.protected Number
getPlotValue(int series, int cat)
Returns the value to be plotted at the intersection of the series and the category.Paint
getSeriesOutlinePaint()
Returns the outline paint for ALL series in the plot.Paint
getSeriesOutlinePaint(int series)
Returns the paint for the specified series.Stroke
getSeriesOutlineStroke()
Returns the outline stroke for ALL series in the plot.Stroke
getSeriesOutlineStroke(int series)
Returns the stroke for the specified series.Paint
getSeriesPaint()
Returns the paint for ALL series in the plot.Paint
getSeriesPaint(int series)
Returns the paint for the specified series.double
getStartAngle()
Returns the start angle for the first radar axis.CategoryToolTipGenerator
getToolTipGenerator()
Returns the tool tip generator for the plot.CategoryURLGenerator
getURLGenerator()
Returns the URL generator for the plot.protected Point2D
getWebPoint(Rectangle2D bounds, double angle, double length)
Returns a cartesian point from a polar angle, length and bounding boxboolean
isWebFilled()
Method to determine if the web chart is to be filled.void
setAxisLabelGap(double gap)
Sets the axis label gap and sends aPlotChangeEvent
to all registered listeners.void
setAxisLinePaint(Paint paint)
Sets the paint used to draw the axis lines and sends aPlotChangeEvent
to all registered listeners.void
setAxisLineStroke(Stroke stroke)
Sets the stroke used to draw the axis lines and sends aPlotChangeEvent
to all registered listeners.void
setBaseSeriesOutlinePaint(Paint paint)
Sets the base series paint.void
setBaseSeriesOutlineStroke(Stroke stroke)
Sets the base series stroke.void
setBaseSeriesPaint(Paint paint)
Sets the base series paint.void
setDataExtractOrder(TableOrder order)
Sets the data extract order (by row or by column) and sends aPlotChangeEvent
to all registered listeners.void
setDataset(CategoryDataset dataset)
Sets the dataset used by the plot and sends aPlotChangeEvent
to all registered listeners.void
setDirection(Rotation direction)
Sets the direction in which the radar axes are drawn and sends aPlotChangeEvent
to all registered listeners.void
setHeadPercent(double percent)
Sets the head percent and sends aPlotChangeEvent
to all registered listeners.void
setInteriorGap(double percent)
Sets the interior gap and sends aPlotChangeEvent
to all registered listeners.void
setLabelFont(Font font)
Sets the series label font and sends aPlotChangeEvent
to all registered listeners.void
setLabelGenerator(CategoryItemLabelGenerator generator)
Sets the label generator and sends aPlotChangeEvent
to all registered listeners.void
setLabelPaint(Paint paint)
Sets the series label paint and sends aPlotChangeEvent
to all registered listeners.void
setLegendItemShape(Shape shape)
Sets the shape used for legend items and sends aPlotChangeEvent
to all registered listeners.void
setMaxValue(double value)
Sets the maximum value any category axis can take and sends aPlotChangeEvent
to all registered listeners.void
setSeriesOutlinePaint(int series, Paint paint)
Sets the paint used to fill a series of the radar and sends aPlotChangeEvent
to all registered listeners.void
setSeriesOutlinePaint(Paint paint)
Sets the outline paint for ALL series in the plot.void
setSeriesOutlineStroke(int series, Stroke stroke)
Sets the stroke used to fill a series of the radar and sends aPlotChangeEvent
to all registered listeners.void
setSeriesOutlineStroke(Stroke stroke)
Sets the outline stroke for ALL series in the plot.void
setSeriesPaint(int series, Paint paint)
Sets the paint used to fill a series of the radar and sends aPlotChangeEvent
to all registered listeners.void
setSeriesPaint(Paint paint)
Sets the paint for ALL series in the plot.void
setStartAngle(double angle)
Sets the starting angle and sends aPlotChangeEvent
to all registered listeners.void
setToolTipGenerator(CategoryToolTipGenerator generator)
Sets the tool tip generator for the plot and sends aPlotChangeEvent
to all registered listeners.void
setURLGenerator(CategoryURLGenerator generator)
Sets the URL generator for the plot and sends aPlotChangeEvent
to all registered listeners.void
setWebFilled(boolean flag)
Sets the webFilled flag and sends aPlotChangeEvent
to all registered listeners.Methods inherited from class org.jfree.chart.plot.Plot
addChangeListener, annotationChanged, axisChanged, createAndAddEntity, datasetChanged, drawBackground, drawBackgroundImage, drawNoDataMessage, drawOutline, fetchElementHintingFlag, fillBackground, fillBackground, fireChangeEvent, getBackgroundAlpha, getBackgroundImage, getBackgroundImageAlignment, getBackgroundImageAlpha, getBackgroundPaint, getChart, getDatasetGroup, getDrawingSupplier, getForegroundAlpha, getInsets, getNoDataMessage, getNoDataMessageFont, getNoDataMessagePaint, getOutlinePaint, getOutlineStroke, getParent, getRectX, getRectY, getRootPlot, handleClick, isNotify, isOutlineVisible, isSubplot, markerChanged, notifyListeners, removeChangeListener, resolveDomainAxisLocation, resolveRangeAxisLocation, setBackgroundAlpha, setBackgroundImage, setBackgroundImageAlignment, setBackgroundImageAlpha, setBackgroundPaint, setChart, setDatasetGroup, setDrawingSupplier, setDrawingSupplier, setForegroundAlpha, setInsets, setInsets, setNoDataMessage, setNoDataMessageFont, setNoDataMessagePaint, setNotify, setOutlinePaint, setOutlineStroke, setOutlineVisible, setParent, zoom
-
Field Details
-
DEFAULT_HEAD
The default head radius percent (currently 1%).- See Also:
- Constant Field Values
-
DEFAULT_AXIS_LABEL_GAP
The default axis label gap (currently 10%).- See Also:
- Constant Field Values
-
DEFAULT_INTERIOR_GAP
The default interior gap.- See Also:
- Constant Field Values
-
MAX_INTERIOR_GAP
The maximum interior gap (currently 40%).- See Also:
- Constant Field Values
-
DEFAULT_START_ANGLE
The default starting angle for the radar chart axes.- See Also:
- Constant Field Values
-
DEFAULT_LABEL_FONT
The default series label font. -
DEFAULT_LABEL_PAINT
The default series label paint. -
DEFAULT_LABEL_BACKGROUND_PAINT
The default series label background paint. -
DEFAULT_LABEL_OUTLINE_PAINT
The default series label outline paint. -
DEFAULT_LABEL_OUTLINE_STROKE
The default series label outline stroke. -
DEFAULT_LABEL_SHADOW_PAINT
The default series label shadow paint. -
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
The head radius as a percentage of the available drawing area.
-
-
Constructor Details
-
SpiderWebPlot
public SpiderWebPlot()Creates a default plot with no dataset. -
SpiderWebPlot
Creates a new spider web plot with the given dataset, with each row representing a series.- Parameters:
dataset
- the dataset (null
permitted).
-
SpiderWebPlot
Creates a new spider web plot with the given dataset.- Parameters:
dataset
- the dataset.extract
- controls how data is extracted (TableOrder.BY_ROW
orTableOrder.BY_COLUMN
).
-
-
Method Details
-
getPlotType
Returns a short string describing the type of plot.- Specified by:
getPlotType
in classPlot
- Returns:
- The plot type.
-
getDataset
Returns the dataset.- Returns:
- The dataset (possibly
null
). - See Also:
setDataset(CategoryDataset)
-
setDataset
Sets the dataset used by the plot and sends aPlotChangeEvent
to all registered listeners.- Parameters:
dataset
- the dataset (null
permitted).- See Also:
getDataset()
-
isWebFilled
Method to determine if the web chart is to be filled.- Returns:
- A boolean.
- See Also:
setWebFilled(boolean)
-
setWebFilled
Sets the webFilled flag and sends aPlotChangeEvent
to all registered listeners.- Parameters:
flag
- the flag.- See Also:
isWebFilled()
-
getDataExtractOrder
Returns the data extract order (by row or by column).- Returns:
- The data extract order (never
null
). - See Also:
setDataExtractOrder(TableOrder)
-
setDataExtractOrder
Sets the data extract order (by row or by column) and sends aPlotChangeEvent
to all registered listeners.- Parameters:
order
- the order (null
not permitted).- Throws:
IllegalArgumentException
- iforder
isnull
.- See Also:
getDataExtractOrder()
-
getHeadPercent
Returns the head percent (the default value is 0.01).- Returns:
- The head percent (always > 0).
- See Also:
setHeadPercent(double)
-
setHeadPercent
Sets the head percent and sends aPlotChangeEvent
to all registered listeners. Note that 0.10 is 10 percent.- Parameters:
percent
- the percent (must be greater than zero).- See Also:
getHeadPercent()
-
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
Sets the starting angle and sends aPlotChangeEvent
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
Returns the maximum value any category axis can take.- Returns:
- The maximum value.
- See Also:
setMaxValue(double)
-
setMaxValue
Sets the maximum value any category axis can take and sends aPlotChangeEvent
to all registered listeners.- Parameters:
value
- the maximum value.- See Also:
getMaxValue()
-
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
Sets the direction in which the radar axes are drawn and sends aPlotChangeEvent
to all registered listeners.- Parameters:
direction
- the direction (null
not permitted).- See Also:
getDirection()
-
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
Sets the interior gap and sends aPlotChangeEvent
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
Returns the axis label gap.- Returns:
- The axis label gap.
- See Also:
setAxisLabelGap(double)
-
setAxisLabelGap
Sets the axis label gap and sends aPlotChangeEvent
to all registered listeners.- Parameters:
gap
- the gap.- See Also:
getAxisLabelGap()
-
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
Sets the paint used to draw the axis lines and sends aPlotChangeEvent
to all registered listeners.- Parameters:
paint
- the paint (null
not permitted).- See Also:
getAxisLinePaint()
-
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
Sets the stroke used to draw the axis lines and sends aPlotChangeEvent
to all registered listeners.- Parameters:
stroke
- the stroke (null
not permitted).- See Also:
getAxisLineStroke()
-
getSeriesPaint
Returns the paint for ALL series in the plot.- Returns:
- The paint (possibly
null
). - See Also:
setSeriesPaint(Paint)
-
setSeriesPaint
Sets the paint for ALL series in the plot. If this is set tonull
, 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
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
Sets the paint used to fill a series of the radar and sends aPlotChangeEvent
to all registered listeners.- Parameters:
series
- the series index (zero-based).paint
- the paint (null
permitted).- See Also:
getSeriesPaint(int)
-
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
Sets the base series paint.- Parameters:
paint
- the paint (null
not permitted).- See Also:
getBaseSeriesPaint()
-
getSeriesOutlinePaint
Returns the outline paint for ALL series in the plot.- Returns:
- The paint (possibly
null
).
-
setSeriesOutlinePaint
Sets the outline paint for ALL series in the plot. If this is set tonull
, 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
Returns the paint for the specified series.- Parameters:
series
- the series index (zero-based).- Returns:
- The paint (never
null
).
-
setSeriesOutlinePaint
Sets the paint used to fill a series of the radar and sends aPlotChangeEvent
to all registered listeners.- Parameters:
series
- the series index (zero-based).paint
- the paint (null
permitted).
-
getBaseSeriesOutlinePaint
Returns the base series paint. This is used when no other paint is available.- Returns:
- The paint (never
null
).
-
setBaseSeriesOutlinePaint
Sets the base series paint.- Parameters:
paint
- the paint (null
not permitted).
-
getSeriesOutlineStroke
Returns the outline stroke for ALL series in the plot.- Returns:
- The stroke (possibly
null
).
-
setSeriesOutlineStroke
Sets the outline stroke for ALL series in the plot. If this is set tonull
, 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
Returns the stroke for the specified series.- Parameters:
series
- the series index (zero-based).- Returns:
- The stroke (never
null
).
-
setSeriesOutlineStroke
Sets the stroke used to fill a series of the radar and sends aPlotChangeEvent
to all registered listeners.- Parameters:
series
- the series index (zero-based).stroke
- the stroke (null
permitted).
-
getBaseSeriesOutlineStroke
Returns the base series stroke. This is used when no other stroke is available.- Returns:
- The stroke (never
null
).
-
setBaseSeriesOutlineStroke
Sets the base series stroke.- Parameters:
stroke
- the stroke (null
not permitted).
-
getLegendItemShape
Returns the shape used for legend items.- Returns:
- The shape (never
null
). - See Also:
setLegendItemShape(Shape)
-
setLegendItemShape
Sets the shape used for legend items and sends aPlotChangeEvent
to all registered listeners.- Parameters:
shape
- the shape (null
not permitted).- See Also:
getLegendItemShape()
-
getLabelFont
Returns the series label font.- Returns:
- The font (never
null
). - See Also:
setLabelFont(Font)
-
setLabelFont
Sets the series label font and sends aPlotChangeEvent
to all registered listeners.- Parameters:
font
- the font (null
not permitted).- See Also:
getLabelFont()
-
getLabelPaint
Returns the series label paint.- Returns:
- The paint (never
null
). - See Also:
setLabelPaint(Paint)
-
setLabelPaint
Sets the series label paint and sends aPlotChangeEvent
to all registered listeners.- Parameters:
paint
- the paint (null
not permitted).- See Also:
getLabelPaint()
-
getLabelGenerator
Returns the label generator.- Returns:
- The label generator (never
null
). - See Also:
setLabelGenerator(CategoryItemLabelGenerator)
-
setLabelGenerator
Sets the label generator and sends aPlotChangeEvent
to all registered listeners.- Parameters:
generator
- the generator (null
not permitted).- See Also:
getLabelGenerator()
-
getToolTipGenerator
Returns the tool tip generator for the plot.- Returns:
- The tool tip generator (possibly
null
). - See Also:
setToolTipGenerator(CategoryToolTipGenerator)
-
setToolTipGenerator
Sets the tool tip generator for the plot and sends aPlotChangeEvent
to all registered listeners.- Parameters:
generator
- the generator (null
permitted).- See Also:
getToolTipGenerator()
-
getURLGenerator
Returns the URL generator for the plot.- Returns:
- The URL generator (possibly
null
). - See Also:
setURLGenerator(CategoryURLGenerator)
-
setURLGenerator
Sets the URL generator for the plot and sends aPlotChangeEvent
to all registered listeners.- Parameters:
generator
- the generator (null
permitted).- See Also:
getURLGenerator()
-
getLegendItems
Returns a collection of legend items for the spider web chart.- Specified by:
getLegendItems
in interfaceLegendItemSource
- Overrides:
getLegendItems
in classPlot
- Returns:
- The legend items (never
null
).
-
getWebPoint
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). -
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 axesinfo
- chart rendering info.series
- the series within the dataset we are plottingcatCount
- the number of categories per radar plotheadH
- the data point heightheadW
- the data point width
-
getPlotValue
Returns the value to be plotted at the intersection of the series and the category. This allows us to plotBY_ROW
orBY_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(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 areavalue
- 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 areastartAngle
- the start angle for the pie series.- Returns:
- The location for a label.
-
equals
Tests this plot for equality with an arbitrary object. -
clone
Returns a clone of this plot.- Specified by:
clone
in interfacePublicCloneable
- Overrides:
clone
in classPlot
- Returns:
- A clone of this plot.
- Throws:
CloneNotSupportedException
- if the plot cannot be cloned for any reason.
-