public class SpiderWebPlot extends Plot implements java.lang.Cloneable, java.io.Serializable
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.| Modifier and Type | Field and Description |
|---|---|
private double |
axisLabelGap
The gap between the labels and the axes as a %age of the radius.
|
private java.awt.Paint |
axisLinePaint
The paint used to draw the axis lines.
|
private java.awt.Stroke |
axisLineStroke
The stroke used to draw the axis lines.
|
private java.awt.Paint |
baseSeriesOutlinePaint
The base series outline paint (fallback).
|
private java.awt.Stroke |
baseSeriesOutlineStroke
The base series outline stroke (fallback).
|
private java.awt.Paint |
baseSeriesPaint
The base series paint (fallback).
|
private org.jfree.util.TableOrder |
dataExtractOrder
The data extract order (BY_ROW or BY_COLUMN).
|
private CategoryDataset |
dataset
The dataset.
|
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 java.awt.Paint |
DEFAULT_LABEL_BACKGROUND_PAINT
The default series label background paint.
|
static java.awt.Font |
DEFAULT_LABEL_FONT
The default series label font.
|
static java.awt.Paint |
DEFAULT_LABEL_OUTLINE_PAINT
The default series label outline paint.
|
static java.awt.Stroke |
DEFAULT_LABEL_OUTLINE_STROKE
The default series label outline stroke.
|
static java.awt.Paint |
DEFAULT_LABEL_PAINT
The default series label paint.
|
static java.awt.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 in
|
static double |
DEFAULT_START_ANGLE
The default starting angle for the radar chart axes.
|
private org.jfree.util.Rotation |
direction
The direction for drawing the radar axis and plots.
|
protected double |
headPercent
The head radius as a percentage of the available drawing area.
|
private double |
interiorGap
The space left around the outside of the plot as a percentage.
|
private java.awt.Font |
labelFont
The font used to display the category labels.
|
private CategoryItemLabelGenerator |
labelGenerator
The label generator.
|
private java.awt.Paint |
labelPaint
The color used to draw the category labels.
|
private java.awt.Shape |
legendItemShape
The legend item shape.
|
static double |
MAX_INTERIOR_GAP
The maximum interior gap (currently 40%).
|
private double |
maxValue
The maximum value we are plotting against on each category axis
|
private static long |
serialVersionUID
For serialization.
|
private java.awt.Paint |
seriesOutlinePaint
The outline paint for ALL series (overrides list).
|
private org.jfree.util.PaintList |
seriesOutlinePaintList
The series outline paint list.
|
private java.awt.Stroke |
seriesOutlineStroke
The outline stroke for ALL series (overrides list).
|
private org.jfree.util.StrokeList |
seriesOutlineStrokeList
The series outline stroke list.
|
private java.awt.Paint |
seriesPaint
The paint for ALL series (overrides list).
|
private org.jfree.util.PaintList |
seriesPaintList
The series paint list.
|
private double |
startAngle
The starting angle.
|
private CategoryToolTipGenerator |
toolTipGenerator
A tooltip generator for the plot (
null permitted). |
private CategoryURLGenerator |
urlGenerator
A URL generator for the plot (
null permitted). |
private boolean |
webFilled
controls if the web polygons are filled or not
|
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 and 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,
org.jfree.util.TableOrder extract)
Creates a new spider web plot with the given dataset.
|
| Modifier and Type | Method and Description |
|---|---|
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
|
private void |
calculateMaxValue(int seriesCount,
int catCount)
loop through each of the series to get the maximum value
on each category axis
|
java.lang.Object |
clone()
Returns a clone of this plot.
|
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).
|
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.
|
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.
|
boolean |
equals(java.lang.Object obj)
Tests this plot for equality with an arbitrary object.
|
double |
getAxisLabelGap()
Returns the axis label gap.
|
java.awt.Paint |
getAxisLinePaint()
Returns the paint used to draw the axis lines.
|
java.awt.Stroke |
getAxisLineStroke()
Returns the stroke used to draw the axis lines.
|
java.awt.Paint |
getBaseSeriesOutlinePaint()
Returns the base series paint.
|
java.awt.Stroke |
getBaseSeriesOutlineStroke()
Returns the base series stroke.
|
java.awt.Paint |
getBaseSeriesPaint()
Returns the base series paint.
|
org.jfree.util.TableOrder |
getDataExtractOrder()
Returns the data extract order (by row or by column).
|
CategoryDataset |
getDataset()
Returns the dataset.
|
org.jfree.util.Rotation |
getDirection()
Returns the direction in which the radar axes are drawn
(clockwise or anti-clockwise).
|
double |
getHeadPercent()
Returns the head percent.
|
double |
getInteriorGap()
Returns the interior gap, measured as a percentage of the available
drawing space.
|
java.awt.Font |
getLabelFont()
Returns the series label font.
|
CategoryItemLabelGenerator |
getLabelGenerator()
Returns the label generator.
|
java.awt.Paint |
getLabelPaint()
Returns the series label paint.
|
LegendItemCollection |
getLegendItems()
Returns a collection of legend items for the spider web chart.
|
java.awt.Shape |
getLegendItemShape()
Returns the shape used for legend items.
|
double |
getMaxValue()
Returns the maximum value any category axis can take.
|
java.lang.String |
getPlotType()
Returns a short string describing the type of plot.
|
protected java.lang.Number |
getPlotValue(int series,
int cat)
Returns the value to be plotted at the interseries of the
series and the category.
|
java.awt.Paint |
getSeriesOutlinePaint()
Returns the outline paint for ALL series in the plot.
|
java.awt.Paint |
getSeriesOutlinePaint(int series)
Returns the paint for the specified series.
|
java.awt.Stroke |
getSeriesOutlineStroke()
Returns the outline stroke for ALL series in the plot.
|
java.awt.Stroke |
getSeriesOutlineStroke(int series)
Returns the stroke for the specified series.
|
java.awt.Paint |
getSeriesPaint()
Returns the paint for ALL series in the plot.
|
java.awt.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 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
|
boolean |
isWebFilled()
Method to determine if the web chart is to be filled.
|
private void |
readObject(java.io.ObjectInputStream stream)
Provides serialization support.
|
void |
setAxisLabelGap(double gap)
Sets the axis label gap and sends a
PlotChangeEvent to all
registered listeners. |
void |
setAxisLinePaint(java.awt.Paint paint)
Sets the paint used to draw the axis lines and sends a
PlotChangeEvent to all registered listeners. |
void |
setAxisLineStroke(java.awt.Stroke stroke)
Sets the stroke used to draw the axis lines and sends a
PlotChangeEvent to all registered listeners. |
void |
setBaseSeriesOutlinePaint(java.awt.Paint paint)
Sets the base series paint.
|
void |
setBaseSeriesOutlineStroke(java.awt.Stroke stroke)
Sets the base series stroke.
|
void |
setBaseSeriesPaint(java.awt.Paint paint)
Sets the base series paint.
|
void |
setDataExtractOrder(org.jfree.util.TableOrder order)
Sets the data extract order (by row or by column) and sends a
PlotChangeEventto all registered listeners. |
void |
setDataset(CategoryDataset dataset)
Sets the dataset used by the plot and sends a
PlotChangeEvent
to all registered listeners. |
void |
setDirection(org.jfree.util.Rotation direction)
Sets the direction in which the radar axes are drawn and sends a
PlotChangeEvent to all registered listeners. |
void |
setHeadPercent(double percent)
Sets the head percent and sends a
PlotChangeEvent to all
registered listeners. |
void |
setInteriorGap(double percent)
Sets the interior gap and sends a
PlotChangeEvent to all
registered listeners. |
void |
setLabelFont(java.awt.Font font)
Sets the series label font and sends a
PlotChangeEvent to all
registered listeners. |
void |
setLabelGenerator(CategoryItemLabelGenerator generator)
Sets the label generator and sends a
PlotChangeEvent to all
registered listeners. |
void |
setLabelPaint(java.awt.Paint paint)
Sets the series label paint and sends a
PlotChangeEvent to all
registered listeners. |
void |
setLegendItemShape(java.awt.Shape shape)
Sets the shape used for legend items and sends a
PlotChangeEvent
to all registered listeners. |
void |
setMaxValue(double value)
Sets the maximum value any category axis can take and sends
a
PlotChangeEvent to all registered listeners. |
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. |
void |
setSeriesOutlinePaint(java.awt.Paint paint)
Sets the outline paint for ALL series in the plot.
|
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. |
void |
setSeriesOutlineStroke(java.awt.Stroke stroke)
Sets the outline stroke for ALL series in the plot.
|
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. |
void |
setSeriesPaint(java.awt.Paint paint)
Sets the paint for ALL series in the plot.
|
void |
setStartAngle(double angle)
Sets the starting angle and sends a
PlotChangeEvent to all
registered listeners. |
void |
setToolTipGenerator(CategoryToolTipGenerator generator)
Sets the tool tip generator for the plot and sends a
PlotChangeEvent to all registered listeners. |
void |
setURLGenerator(CategoryURLGenerator generator)
Sets the URL generator for the plot and sends a
PlotChangeEvent to all registered listeners. |
void |
setWebFilled(boolean flag)
Sets the webFilled flag and sends a
PlotChangeEvent to all
registered listeners. |
private void |
writeObject(java.io.ObjectOutputStream stream)
Provides serialization support.
|
addChangeListener, annotationChanged, axisChanged, createAndAddEntity, datasetChanged, drawBackground, drawBackgroundImage, drawNoDataMessage, drawOutline, fillBackground, fillBackground, fireChangeEvent, getBackgroundAlpha, getBackgroundImage, getBackgroundImageAlignment, getBackgroundImageAlpha, getBackgroundPaint, 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, setDatasetGroup, setDrawingSupplier, setDrawingSupplier, setForegroundAlpha, setInsets, setInsets, setNoDataMessage, setNoDataMessageFont, setNoDataMessagePaint, setNotify, setOutlinePaint, setOutlineStroke, setOutlineVisible, setParent, zoomprivate static final long serialVersionUID
public static final double DEFAULT_HEAD
public static final double DEFAULT_AXIS_LABEL_GAP
public static final double DEFAULT_INTERIOR_GAP
public static final double MAX_INTERIOR_GAP
public static final double DEFAULT_START_ANGLE
public static final java.awt.Font DEFAULT_LABEL_FONT
public static final java.awt.Paint DEFAULT_LABEL_PAINT
public static final java.awt.Paint DEFAULT_LABEL_BACKGROUND_PAINT
public static final java.awt.Paint DEFAULT_LABEL_OUTLINE_PAINT
public static final java.awt.Stroke DEFAULT_LABEL_OUTLINE_STROKE
public static final java.awt.Paint DEFAULT_LABEL_SHADOW_PAINT
public static final double DEFAULT_MAX_VALUE
protected double headPercent
private double interiorGap
private double axisLabelGap
private transient java.awt.Paint axisLinePaint
private transient java.awt.Stroke axisLineStroke
private CategoryDataset dataset
private double maxValue
private org.jfree.util.TableOrder dataExtractOrder
private double startAngle
private org.jfree.util.Rotation direction
private transient java.awt.Shape legendItemShape
private transient java.awt.Paint seriesPaint
private org.jfree.util.PaintList seriesPaintList
private transient java.awt.Paint baseSeriesPaint
private transient java.awt.Paint seriesOutlinePaint
private org.jfree.util.PaintList seriesOutlinePaintList
private transient java.awt.Paint baseSeriesOutlinePaint
private transient java.awt.Stroke seriesOutlineStroke
private org.jfree.util.StrokeList seriesOutlineStrokeList
private transient java.awt.Stroke baseSeriesOutlineStroke
private java.awt.Font labelFont
private transient java.awt.Paint labelPaint
private CategoryItemLabelGenerator labelGenerator
private boolean webFilled
private CategoryToolTipGenerator toolTipGenerator
null permitted).private CategoryURLGenerator urlGenerator
null permitted).public SpiderWebPlot()
public SpiderWebPlot(CategoryDataset dataset)
dataset - the dataset (null permitted).public SpiderWebPlot(CategoryDataset dataset, org.jfree.util.TableOrder extract)
dataset - the dataset.extract - controls how data is extracted (TableOrder.BY_ROW
or TableOrder.BY_COLUMN).public java.lang.String getPlotType()
getPlotType in class Plotpublic CategoryDataset getDataset()
null).setDataset(CategoryDataset)public void setDataset(CategoryDataset dataset)
PlotChangeEvent
to all registered listeners.dataset - the dataset (null permitted).getDataset()public boolean isWebFilled()
setWebFilled(boolean)public void setWebFilled(boolean flag)
PlotChangeEvent to all
registered listeners.flag - the flag.isWebFilled()public org.jfree.util.TableOrder getDataExtractOrder()
null).setDataExtractOrder(TableOrder)public void setDataExtractOrder(org.jfree.util.TableOrder order)
PlotChangeEventto all registered listeners.order - the order (null not permitted).java.lang.IllegalArgumentException - if order is
null.getDataExtractOrder()public double getHeadPercent()
setHeadPercent(double)public void setHeadPercent(double percent)
PlotChangeEvent to all
registered listeners.percent - the percent.getHeadPercent()public double getStartAngle()
setStartAngle(double)public void setStartAngle(double angle)
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.
angle - the angle (in degrees).getStartAngle()public double getMaxValue()
setMaxValue(double)public void setMaxValue(double value)
PlotChangeEvent to all registered listeners.value - the maximum value.getMaxValue()public org.jfree.util.Rotation getDirection()
null).setDirection(Rotation)public void setDirection(org.jfree.util.Rotation direction)
PlotChangeEvent to all registered listeners.direction - the direction (null not permitted).getDirection()public double getInteriorGap()
setInteriorGap(double)public void setInteriorGap(double percent)
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).percent - the gap (as a percentage of the available drawing space).getInteriorGap()public double getAxisLabelGap()
setAxisLabelGap(double)public void setAxisLabelGap(double gap)
PlotChangeEvent to all
registered listeners.gap - the gap.getAxisLabelGap()public java.awt.Paint getAxisLinePaint()
null).setAxisLinePaint(Paint),
getAxisLineStroke()public void setAxisLinePaint(java.awt.Paint paint)
PlotChangeEvent to all registered listeners.paint - the paint (null not permitted).getAxisLinePaint()public java.awt.Stroke getAxisLineStroke()
null).setAxisLineStroke(Stroke),
getAxisLinePaint()public void setAxisLineStroke(java.awt.Stroke stroke)
PlotChangeEvent to all registered listeners.stroke - the stroke (null not permitted).getAxisLineStroke()public java.awt.Paint getSeriesPaint()
null).setSeriesPaint(Paint)public void setSeriesPaint(java.awt.Paint paint)
null, then a list of paints is used instead (to allow different
colors to be used for each series of the radar group).paint - the paint (null permitted).getSeriesPaint()public java.awt.Paint getSeriesPaint(int series)
series - the series index (zero-based).null).setSeriesPaint(int, Paint)public void setSeriesPaint(int series,
java.awt.Paint paint)
PlotChangeEvent to all registered listeners.series - the series index (zero-based).paint - the paint (null permitted).getSeriesPaint(int)public java.awt.Paint getBaseSeriesPaint()
null).setBaseSeriesPaint(Paint)public void setBaseSeriesPaint(java.awt.Paint paint)
paint - the paint (null not permitted).getBaseSeriesPaint()public java.awt.Paint getSeriesOutlinePaint()
null).public void setSeriesOutlinePaint(java.awt.Paint paint)
null, then a list of paints is used instead (to allow
different colors to be used for each series).paint - the paint (null permitted).public java.awt.Paint getSeriesOutlinePaint(int series)
series - the series index (zero-based).null).public void setSeriesOutlinePaint(int series,
java.awt.Paint paint)
PlotChangeEvent to all registered listeners.series - the series index (zero-based).paint - the paint (null permitted).public java.awt.Paint getBaseSeriesOutlinePaint()
null).public void setBaseSeriesOutlinePaint(java.awt.Paint paint)
paint - the paint (null not permitted).public java.awt.Stroke getSeriesOutlineStroke()
null).public void setSeriesOutlineStroke(java.awt.Stroke stroke)
null, then a list of paints is used instead (to allow
different colors to be used for each series).stroke - the stroke (null permitted).public java.awt.Stroke getSeriesOutlineStroke(int series)
series - the series index (zero-based).null).public void setSeriesOutlineStroke(int series,
java.awt.Stroke stroke)
PlotChangeEvent to all registered listeners.series - the series index (zero-based).stroke - the stroke (null permitted).public java.awt.Stroke getBaseSeriesOutlineStroke()
null).public void setBaseSeriesOutlineStroke(java.awt.Stroke stroke)
stroke - the stroke (null not permitted).public java.awt.Shape getLegendItemShape()
null).setLegendItemShape(Shape)public void setLegendItemShape(java.awt.Shape shape)
PlotChangeEvent
to all registered listeners.shape - the shape (null not permitted).getLegendItemShape()public java.awt.Font getLabelFont()
null).setLabelFont(Font)public void setLabelFont(java.awt.Font font)
PlotChangeEvent to all
registered listeners.font - the font (null not permitted).getLabelFont()public java.awt.Paint getLabelPaint()
null).setLabelPaint(Paint)public void setLabelPaint(java.awt.Paint paint)
PlotChangeEvent to all
registered listeners.paint - the paint (null not permitted).getLabelPaint()public CategoryItemLabelGenerator getLabelGenerator()
null).setLabelGenerator(CategoryItemLabelGenerator)public void setLabelGenerator(CategoryItemLabelGenerator generator)
PlotChangeEvent to all
registered listeners.generator - the generator (null not permitted).getLabelGenerator()public CategoryToolTipGenerator getToolTipGenerator()
null).setToolTipGenerator(CategoryToolTipGenerator)public void setToolTipGenerator(CategoryToolTipGenerator generator)
PlotChangeEvent to all registered listeners.generator - the generator (null permitted).getToolTipGenerator()public CategoryURLGenerator getURLGenerator()
null).setURLGenerator(CategoryURLGenerator)public void setURLGenerator(CategoryURLGenerator generator)
PlotChangeEvent to all registered listeners.generator - the generator (null permitted).getURLGenerator()public LegendItemCollection getLegendItems()
getLegendItems in interface LegendItemSourcegetLegendItems in class Plotnull).protected java.awt.geom.Point2D getWebPoint(java.awt.geom.Rectangle2D bounds,
double angle,
double length)
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.public void draw(java.awt.Graphics2D g2,
java.awt.geom.Rectangle2D area,
java.awt.geom.Point2D anchor,
PlotState parentState,
PlotRenderingInfo info)
private void calculateMaxValue(int seriesCount,
int catCount)
seriesCount - the number of seriescatCount - the number of categoriesprotected 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)
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 widthprotected java.lang.Number getPlotValue(int series,
int cat)
BY_ROW or BY_COLUMN which basically is just
reversing the definition of the categories and data series being
plotted.series - the series to be plotted.cat - the category within the series to be plotted.null).getDataExtractOrder()protected void drawLabel(java.awt.Graphics2D g2,
java.awt.geom.Rectangle2D plotArea,
double value,
int cat,
double startAngle,
double extent)
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.protected java.awt.geom.Point2D calculateLabelLocation(java.awt.geom.Rectangle2D labelBounds,
double ascent,
java.awt.geom.Rectangle2D plotArea,
double startAngle)
labelBounds - the label bounds.ascent - the ascent (height of font).plotArea - the plot areastartAngle - the start angle for the pie series.public boolean equals(java.lang.Object obj)
public java.lang.Object clone()
throws java.lang.CloneNotSupportedException
private void writeObject(java.io.ObjectOutputStream stream)
throws java.io.IOException
stream - the output stream.java.io.IOException - if there is an I/O error.private void readObject(java.io.ObjectInputStream stream)
throws java.io.IOException,
java.lang.ClassNotFoundException
stream - the input stream.java.io.IOException - if there is an I/O error.java.lang.ClassNotFoundException - if there is a classpath problem.