Class PolarPlot
- java.lang.Object
-
- org.jfree.chart.plot.Plot
-
- org.jfree.chart.plot.PolarPlot
-
- All Implemented Interfaces:
java.io.Serializable
,java.lang.Cloneable
,java.util.EventListener
,AnnotationChangeListener
,AxisChangeListener
,MarkerChangeListener
,RendererChangeListener
,LegendItemSource
,ValueAxisPlot
,Zoomable
,PublicCloneable
,DatasetChangeListener
public class PolarPlot extends Plot implements ValueAxisPlot, Zoomable, RendererChangeListener, java.lang.Cloneable, java.io.Serializable
Plots data that is in (theta, radius) pairs where theta equal to zero is due north and increases clockwise.- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description private java.awt.Paint
angleGridlinePaint
The paint used to draw the angular grid-lines.private java.awt.Stroke
angleGridlineStroke
The stroke used to draw the angular grid-lines.private boolean
angleGridlinesVisible
A flag that controls whether the angular grid-lines are visible.private java.awt.Font
angleLabelFont
The font used to display the angle labels - never null.private java.awt.Paint
angleLabelPaint
The paint used to display the angle labels.private boolean
angleLabelsVisible
A flag that controls whether or not the angle labels are visible.private double
angleOffset
An offset for the angles, to start with 0 degrees at north, east, south or west.private java.util.List
angleTicks
The angles that are marked with gridlines.private TickUnit
angleTickUnit
The tick unit that controls the spacing between the angular grid lines.private static double
ANNOTATION_MARGIN
The annotation margin.private ObjectList
axes
The range axis (used for the y-values).private ObjectList
axisLocations
The axis locations.private java.util.List
cornerTextItems
The annotations for the plot.private boolean
counterClockwise
A flag indicating if the angles increase counterclockwise or clockwise.private ObjectList
datasets
Storage for the datasets.private java.util.Map
datasetToAxesMap
Storage for the mapping between datasets/renderers and range axes.static double
DEFAULT_ANGLE_OFFSET
The default angle offset.static double
DEFAULT_ANGLE_TICK_UNIT_SIZE
The default angle tick unit size.static java.awt.Paint
DEFAULT_GRIDLINE_PAINT
The default grid line paint.static java.awt.Stroke
DEFAULT_GRIDLINE_STROKE
The default grid line stroke.private static int
DEFAULT_MARGIN
The default margin.private LegendItemCollection
fixedLegendItems
An optional collection of legend items that can be returned by the getLegendItems() method.protected static java.util.ResourceBundle
localizationResources
The resourceBundle for the localization.private int
margin
The actual margin in pixels.private java.awt.Paint
radiusGridlinePaint
The paint used to draw the radius grid-lines.private java.awt.Stroke
radiusGridlineStroke
The stroke used to draw the radius grid-lines.private boolean
radiusGridlinesVisible
A flag that controls whether the radius grid-lines are visible.private boolean
radiusMinorGridlinesVisible
A flag that controls whether the radial minor grid-lines are visible.private ObjectList
renderers
Storage for the renderers.private static long
serialVersionUID
For serialization.-
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 PolarPlot()
Default constructor.PolarPlot(XYDataset dataset, ValueAxis radiusAxis, PolarItemRenderer renderer)
Creates a new plot.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addCornerTextItem(java.lang.String text)
Add text to be displayed in the lower right hand corner and sends aPlotChangeEvent
to all registered listeners.protected java.util.List
buildRadialTicks(java.util.List allTicks)
Create a list of ticks based on the given list and plot properties.protected TextAnchor
calculateTextAnchor(double angleDegrees)
Calculate the text position for the given degrees.private void
checkAxisIndices(java.util.List indices)
This method is used to perform argument checking on the list of axis indices passed to mapDatasetToAxes().void
clearCornerTextItems()
Clear the list of corner text items and sends aPlotChangeEvent
to all registered listeners.java.lang.Object
clone()
Returns a clone of the plot.void
datasetChanged(DatasetChangeEvent event)
Receives notification of a change to the plot's m_Dataset.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 AxisState
drawAxis(ValueAxis axis, PolarAxisLocation location, java.awt.Graphics2D g2, java.awt.geom.Rectangle2D plotArea)
Draws the axis with the specified index.protected void
drawCornerTextItems(java.awt.Graphics2D g2, java.awt.geom.Rectangle2D area)
Draws the corner text items.protected void
drawGridlines(java.awt.Graphics2D g2, java.awt.geom.Rectangle2D dataArea, java.util.List angularTicks, java.util.List radialTicks)
Draws the gridlines for the plot, if they are visible.boolean
equals(java.lang.Object obj)
Tests this plot for equality with another object.java.awt.Paint
getAngleGridlinePaint()
Returns the paint for the grid lines (if any) plotted against the angular axis.java.awt.Stroke
getAngleGridlineStroke()
Returns the stroke for the grid-lines (if any) plotted against the angular axis.java.awt.Font
getAngleLabelFont()
Returns the font used to display the angle labels.java.awt.Paint
getAngleLabelPaint()
Returns the paint used to display the angle labels.double
getAngleOffset()
Returns the offset that is used for all angles.TickUnit
getAngleTickUnit()
Returns the tick unit that controls the spacing of the angular grid lines.ValueAxis
getAxis()
Returns the primary axis for the plot.ValueAxis
getAxis(int index)
Returns an axis for the plot.int
getAxisCount()
Returns the number of domain axes.ValueAxis
getAxisForDataset(int index)
Returns the axis for a dataset.int
getAxisIndex(ValueAxis axis)
Returns the index of the given axis.PolarAxisLocation
getAxisLocation()
Returns the location of the primary axis.PolarAxisLocation
getAxisLocation(int index)
Returns the location for an axis.Range
getDataRange(ValueAxis axis)
Returns the range for the specified axis.XYDataset
getDataset()
Returns the primary dataset for the plot.XYDataset
getDataset(int index)
Returns the dataset with the specified index, if any.int
getDatasetCount()
Returns the number of datasets.private java.util.List
getDatasetsMappedToAxis(java.lang.Integer axisIndex)
A utility method that returns a list of datasets that are mapped to a particular axis.LegendItemCollection
getFixedLegendItems()
Returns the fixed legend items, if any.int
getIndexOf(PolarItemRenderer renderer)
Returns the index of the specified renderer, or-1
if the renderer is not assigned to this plot.LegendItemCollection
getLegendItems()
Returns the legend items for the plot.int
getMargin()
Returns the margin around the plot area.PlotOrientation
getOrientation()
Returns the orientation of the plot.java.lang.String
getPlotType()
Returns the plot type as a string.java.awt.Paint
getRadiusGridlinePaint()
Returns the paint for the grid lines (if any) plotted against the radius axis.java.awt.Stroke
getRadiusGridlineStroke()
Returns the stroke for the grid lines (if any) plotted against the radius axis.PolarItemRenderer
getRenderer()
Returns the primary renderer.PolarItemRenderer
getRenderer(int index)
Returns the renderer at the specified index, if there is one.int
indexOf(XYDataset dataset)
Returns the index of the specified dataset, or-1
if the dataset does not belong to the plot.boolean
isAngleGridlinesVisible()
Returnstrue
if the angular gridlines are visible, andfalse
otherwise.boolean
isAngleLabelsVisible()
Returns a flag that controls whether or not the angle labels are visible.boolean
isCounterClockwise()
Get the direction for growing angle degrees.boolean
isDomainZoomable()
Returnsfalse
always.boolean
isRadiusGridlinesVisible()
Returnstrue
if the radius axis grid is visible, andfalse
otherwise.boolean
isRadiusMinorGridlinesVisible()
Return the current value of the flag indicating if radial minor grid-lines will be drawn or not.boolean
isRangeZoomable()
Returnstrue
to indicate that the range axis is zoomable.void
mapDatasetToAxes(int index, java.util.List axisIndices)
Maps the specified dataset to the axes in the list.void
mapDatasetToAxis(int index, int axisIndex)
Maps a dataset to a particular axis.private void
readObject(java.io.ObjectInputStream stream)
Provides serialization support.protected java.util.List
refreshAngleTicks()
Generates a list of tick values for the angular tick marks.void
removeCornerTextItem(java.lang.String text)
Remove the given text from the list of corner text items and sends aPlotChangeEvent
to all registered listeners.protected void
render(java.awt.Graphics2D g2, java.awt.geom.Rectangle2D dataArea, PlotRenderingInfo info)
Draws a representation of the data within the dataArea region, using the current m_Renderer.void
rendererChanged(RendererChangeEvent event)
Notifies all registered listeners of a property change.void
setAngleGridlinePaint(java.awt.Paint paint)
Sets the paint for the grid lines plotted against the angular axis.void
setAngleGridlineStroke(java.awt.Stroke stroke)
Sets the stroke for the grid lines plotted against the angular axis and sends aPlotChangeEvent
to all registered listeners.void
setAngleGridlinesVisible(boolean visible)
Sets the flag that controls whether or not the angular grid-lines are visible.void
setAngleLabelFont(java.awt.Font font)
Sets the font used to display the angle labels and sends aPlotChangeEvent
to all registered listeners.void
setAngleLabelPaint(java.awt.Paint paint)
Sets the paint used to display the angle labels and sends aPlotChangeEvent
to all registered listeners.void
setAngleLabelsVisible(boolean visible)
Sets the flag that controls whether or not the angle labels are visible, and sends aPlotChangeEvent
to all registered listeners.void
setAngleOffset(double offset)
Sets the offset that is used for all angles and sends aPlotChangeEvent
to all registered listeners.void
setAngleTickUnit(TickUnit unit)
Sets the tick unit that controls the spacing of the angular grid lines, and sends aPlotChangeEvent
to all registered listeners.void
setAxis(int index, ValueAxis axis)
Sets an axis for the plot and sends aPlotChangeEvent
to all registered listeners.void
setAxis(int index, ValueAxis axis, boolean notify)
Sets an axis for the plot and, if requested, sends aPlotChangeEvent
to all registered listeners.void
setAxis(ValueAxis axis)
Sets the primary axis for the plot and sends aPlotChangeEvent
to all registered listeners.void
setAxisLocation(int index, PolarAxisLocation location)
Sets the location for an axis and sends aPlotChangeEvent
to all registered listeners.void
setAxisLocation(int index, PolarAxisLocation location, boolean notify)
Sets the axis location for an axis and, if requested, sends aPlotChangeEvent
to all registered listeners.void
setAxisLocation(PolarAxisLocation location)
Sets the location of the primary axis and sends aPlotChangeEvent
to all registered listeners.void
setAxisLocation(PolarAxisLocation location, boolean notify)
Sets the location of the primary axis and, if requested, sends aPlotChangeEvent
to all registered listeners.void
setCounterClockwise(boolean counterClockwise)
Sets the flag for increasing angle degrees direction.void
setDataset(int index, XYDataset dataset)
Sets a dataset for the plot, replacing the existing dataset at the same index if there is one, and sends alink PlotChangeEvent
to all registered listeners.void
setDataset(XYDataset dataset)
Sets the primary dataset for the plot, replacing the existing dataset if there is one, and sends alink PlotChangeEvent
to all registered listeners.void
setFixedLegendItems(LegendItemCollection items)
Sets the fixed legend items for the plot.void
setMargin(int margin)
Set the margin around the plot area and sends aPlotChangeEvent
to all registered listeners.void
setRadiusGridlinePaint(java.awt.Paint paint)
Sets the paint for the grid lines plotted against the radius axis and sends aPlotChangeEvent
to all registered listeners.void
setRadiusGridlineStroke(java.awt.Stroke stroke)
Sets the stroke for the grid lines plotted against the radius axis and sends aPlotChangeEvent
to all registered listeners.void
setRadiusGridlinesVisible(boolean visible)
Sets the flag that controls whether or not the radius axis grid lines are visible.void
setRadiusMinorGridlinesVisible(boolean flag)
Set the flag that determines if radial minor grid-lines will be drawn, and sends aPlotChangeEvent
to all registered listeners.void
setRenderer(int index, PolarItemRenderer renderer)
Sets a renderer and sends aPlotChangeEvent
to all registered listeners.void
setRenderer(int index, PolarItemRenderer renderer, boolean notify)
Sets a renderer and, if requested, sends aPlotChangeEvent
to all registered listeners.void
setRenderer(PolarItemRenderer renderer)
Sets the primary renderer, and notifies all listeners of a change to the plot.java.awt.Point
translateToJava2D(double angleDegrees, double radius, ValueAxis axis, java.awt.geom.Rectangle2D dataArea)
Translates a (theta, radius) pair into Java2D coordinates.private void
writeObject(java.io.ObjectOutputStream stream)
Provides serialization support.void
zoom(double percent)
Zooms the axis ranges by the specified percentage about the anchor point.void
zoomDomainAxes(double lowerPercent, double upperPercent, PlotRenderingInfo state, java.awt.geom.Point2D source)
This method is required by theZoomable
interface, but since the plot does not have any domain axes, it does nothing.void
zoomDomainAxes(double factor, PlotRenderingInfo state, java.awt.geom.Point2D source)
This method is required by theZoomable
interface, but since the plot does not have any domain axes, it does nothing.void
zoomDomainAxes(double factor, PlotRenderingInfo state, java.awt.geom.Point2D source, boolean useAnchor)
This method is required by theZoomable
interface, but since the plot does not have any domain axes, it does nothing.void
zoomRangeAxes(double lowerPercent, double upperPercent, PlotRenderingInfo state, java.awt.geom.Point2D source)
Zooms in on the range axes.void
zoomRangeAxes(double factor, PlotRenderingInfo state, java.awt.geom.Point2D source)
Multiplies the range on the range axis/axes by the specified factor.void
zoomRangeAxes(double factor, PlotRenderingInfo info, java.awt.geom.Point2D source, boolean useAnchor)
Multiplies the range on the range axis by the specified factor.-
Methods inherited from class org.jfree.chart.plot.Plot
addChangeListener, annotationChanged, axisChanged, canEqual, createAndAddEntity, 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, hashCode, 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
-
-
-
-
Field Detail
-
serialVersionUID
private static final long serialVersionUID
For serialization.- See Also:
- Constant Field Values
-
DEFAULT_MARGIN
private static final int DEFAULT_MARGIN
The default margin.- See Also:
- Constant Field Values
-
ANNOTATION_MARGIN
private static final double ANNOTATION_MARGIN
The annotation margin.- See Also:
- Constant Field Values
-
DEFAULT_ANGLE_TICK_UNIT_SIZE
public static final double DEFAULT_ANGLE_TICK_UNIT_SIZE
The default angle tick unit size.- See Also:
- Constant Field Values
-
DEFAULT_ANGLE_OFFSET
public static final double DEFAULT_ANGLE_OFFSET
The default angle offset.- See Also:
- Constant Field Values
-
DEFAULT_GRIDLINE_STROKE
public static final java.awt.Stroke DEFAULT_GRIDLINE_STROKE
The default grid line stroke.
-
DEFAULT_GRIDLINE_PAINT
public static final java.awt.Paint DEFAULT_GRIDLINE_PAINT
The default grid line paint.
-
localizationResources
protected static java.util.ResourceBundle localizationResources
The resourceBundle for the localization.
-
angleTicks
private java.util.List angleTicks
The angles that are marked with gridlines.
-
axes
private ObjectList axes
The range axis (used for the y-values).
-
axisLocations
private ObjectList axisLocations
The axis locations.
-
datasets
private ObjectList datasets
Storage for the datasets.
-
renderers
private ObjectList renderers
Storage for the renderers.
-
angleTickUnit
private TickUnit angleTickUnit
The tick unit that controls the spacing between the angular grid lines.
-
angleOffset
private double angleOffset
An offset for the angles, to start with 0 degrees at north, east, south or west.
-
counterClockwise
private boolean counterClockwise
A flag indicating if the angles increase counterclockwise or clockwise.
-
angleLabelsVisible
private boolean angleLabelsVisible
A flag that controls whether or not the angle labels are visible.
-
angleLabelFont
private java.awt.Font angleLabelFont
The font used to display the angle labels - never null.
-
angleLabelPaint
private transient java.awt.Paint angleLabelPaint
The paint used to display the angle labels.
-
angleGridlinesVisible
private boolean angleGridlinesVisible
A flag that controls whether the angular grid-lines are visible.
-
angleGridlineStroke
private transient java.awt.Stroke angleGridlineStroke
The stroke used to draw the angular grid-lines.
-
angleGridlinePaint
private transient java.awt.Paint angleGridlinePaint
The paint used to draw the angular grid-lines.
-
radiusGridlinesVisible
private boolean radiusGridlinesVisible
A flag that controls whether the radius grid-lines are visible.
-
radiusGridlineStroke
private transient java.awt.Stroke radiusGridlineStroke
The stroke used to draw the radius grid-lines.
-
radiusGridlinePaint
private transient java.awt.Paint radiusGridlinePaint
The paint used to draw the radius grid-lines.
-
radiusMinorGridlinesVisible
private boolean radiusMinorGridlinesVisible
A flag that controls whether the radial minor grid-lines are visible.
-
cornerTextItems
private java.util.List cornerTextItems
The annotations for the plot.
-
margin
private int margin
The actual margin in pixels.
-
fixedLegendItems
private LegendItemCollection fixedLegendItems
An optional collection of legend items that can be returned by the getLegendItems() method.
-
datasetToAxesMap
private java.util.Map datasetToAxesMap
Storage for the mapping between datasets/renderers and range axes. The keys in the map are Integer objects, corresponding to the dataset index. The values in the map are List objects containing Integer objects (corresponding to the axis indices). If the map contains no entry for a dataset, it is assumed to map to the primary domain axis (index = 0).
-
-
Constructor Detail
-
PolarPlot
public PolarPlot()
Default constructor.
-
PolarPlot
public PolarPlot(XYDataset dataset, ValueAxis radiusAxis, PolarItemRenderer renderer)
Creates a new plot.- Parameters:
dataset
- the dataset (null
permitted).radiusAxis
- the radius axis (null
permitted).renderer
- the renderer (null
permitted).
-
-
Method Detail
-
getPlotType
public java.lang.String getPlotType()
Returns the plot type as a string.- Specified by:
getPlotType
in classPlot
- Returns:
- A short string describing the type of plot.
-
getAxis
public ValueAxis getAxis()
Returns the primary axis for the plot.- Returns:
- The primary axis (possibly
null
). - See Also:
setAxis(ValueAxis)
-
getAxis
public ValueAxis getAxis(int index)
Returns an axis for the plot.- Parameters:
index
- the axis index.- Returns:
- The axis (
null
possible). - See Also:
setAxis(int, ValueAxis)
-
setAxis
public void setAxis(ValueAxis axis)
Sets the primary axis for the plot and sends aPlotChangeEvent
to all registered listeners.- Parameters:
axis
- the new primary axis (null
permitted).
-
setAxis
public void setAxis(int index, ValueAxis axis)
Sets an axis for the plot and sends aPlotChangeEvent
to all registered listeners.- Parameters:
index
- the axis index.axis
- the axis (null
permitted).- See Also:
getAxis(int)
-
setAxis
public void setAxis(int index, ValueAxis axis, boolean notify)
Sets an axis for the plot and, if requested, sends aPlotChangeEvent
to all registered listeners.- Parameters:
index
- the axis index.axis
- the axis (null
permitted).notify
- notify listeners?- See Also:
getAxis(int)
-
getAxisLocation
public PolarAxisLocation getAxisLocation()
Returns the location of the primary axis.- Returns:
- The location (never
null
). - See Also:
setAxisLocation(PolarAxisLocation)
-
getAxisLocation
public PolarAxisLocation getAxisLocation(int index)
Returns the location for an axis.- Parameters:
index
- the axis index.- Returns:
- The location (never
null
). - See Also:
setAxisLocation(int, PolarAxisLocation)
-
setAxisLocation
public void setAxisLocation(PolarAxisLocation location)
Sets the location of the primary axis and sends aPlotChangeEvent
to all registered listeners.- Parameters:
location
- the location (null
not permitted).- See Also:
getAxisLocation()
-
setAxisLocation
public void setAxisLocation(PolarAxisLocation location, boolean notify)
Sets the location of the primary axis and, if requested, sends aPlotChangeEvent
to all registered listeners.- Parameters:
location
- the location (null
not permitted).notify
- notify listeners?- See Also:
getAxisLocation()
-
setAxisLocation
public void setAxisLocation(int index, PolarAxisLocation location)
Sets the location for an axis and sends aPlotChangeEvent
to all registered listeners.- Parameters:
index
- the axis index.location
- the location (null
not permitted).- See Also:
getAxisLocation(int)
-
setAxisLocation
public void setAxisLocation(int index, PolarAxisLocation location, boolean notify)
Sets the axis location for an axis and, if requested, sends aPlotChangeEvent
to all registered listeners.- Parameters:
index
- the axis index.location
- the location (null
not permitted).notify
- notify listeners?
-
getAxisCount
public int getAxisCount()
Returns the number of domain axes.- Returns:
- The axis count.
-
getDataset
public XYDataset getDataset()
Returns the primary dataset for the plot.- Returns:
- The primary dataset (possibly
null
). - See Also:
setDataset(XYDataset)
-
getDataset
public XYDataset getDataset(int index)
Returns the dataset with the specified index, if any.- Parameters:
index
- the dataset index.- Returns:
- The dataset (possibly
null
). - See Also:
setDataset(int, XYDataset)
-
setDataset
public void setDataset(XYDataset dataset)
Sets the primary dataset for the plot, replacing the existing dataset if there is one, and sends alink PlotChangeEvent
to all registered listeners.- Parameters:
dataset
- the dataset (null
permitted).- See Also:
getDataset()
-
setDataset
public void setDataset(int index, XYDataset dataset)
Sets a dataset for the plot, replacing the existing dataset at the same index if there is one, and sends alink PlotChangeEvent
to all registered listeners.- Parameters:
index
- the dataset index.dataset
- the dataset (null
permitted).- See Also:
getDataset(int)
-
getDatasetCount
public int getDatasetCount()
Returns the number of datasets.- Returns:
- The number of datasets.
-
indexOf
public int indexOf(XYDataset dataset)
Returns the index of the specified dataset, or-1
if the dataset does not belong to the plot.- Parameters:
dataset
- the dataset (null
not permitted).- Returns:
- The index.
-
getRenderer
public PolarItemRenderer getRenderer()
Returns the primary renderer.- Returns:
- The renderer (possibly
null
). - See Also:
setRenderer(PolarItemRenderer)
-
getRenderer
public PolarItemRenderer getRenderer(int index)
Returns the renderer at the specified index, if there is one.- Parameters:
index
- the renderer index.- Returns:
- The renderer (possibly
null
). - See Also:
setRenderer(int, PolarItemRenderer)
-
setRenderer
public void setRenderer(PolarItemRenderer renderer)
Sets the primary renderer, and notifies all listeners of a change to the plot. If the renderer is set tonull
, no data items will be drawn for the corresponding dataset.- Parameters:
renderer
- the new renderer (null
permitted).- See Also:
getRenderer()
-
setRenderer
public void setRenderer(int index, PolarItemRenderer renderer)
Sets a renderer and sends aPlotChangeEvent
to all registered listeners.- Parameters:
index
- the index.renderer
- the renderer.- See Also:
getRenderer(int)
-
setRenderer
public void setRenderer(int index, PolarItemRenderer renderer, boolean notify)
Sets a renderer and, if requested, sends aPlotChangeEvent
to all registered listeners.- Parameters:
index
- the index.renderer
- the renderer.notify
- notify listeners?- See Also:
getRenderer(int)
-
getAngleTickUnit
public TickUnit getAngleTickUnit()
Returns the tick unit that controls the spacing of the angular grid lines.- Returns:
- The tick unit (never
null
).
-
setAngleTickUnit
public void setAngleTickUnit(TickUnit unit)
Sets the tick unit that controls the spacing of the angular grid lines, and sends aPlotChangeEvent
to all registered listeners.- Parameters:
unit
- the tick unit (null
not permitted).
-
getAngleOffset
public double getAngleOffset()
Returns the offset that is used for all angles.- Returns:
- The offset for the angles.
-
setAngleOffset
public void setAngleOffset(double offset)
Sets the offset that is used for all angles and sends aPlotChangeEvent
to all registered listeners. This is useful to let 0 degrees be at the north, east, south or west side of the chart.- Parameters:
offset
- The offset
-
isCounterClockwise
public boolean isCounterClockwise()
Get the direction for growing angle degrees.- Returns:
true
if angle increases counterclockwise,false
otherwise.
-
setCounterClockwise
public void setCounterClockwise(boolean counterClockwise)
Sets the flag for increasing angle degrees direction.true
for counterclockwise,false
for clockwise.- Parameters:
counterClockwise
- The flag.
-
isAngleLabelsVisible
public boolean isAngleLabelsVisible()
Returns a flag that controls whether or not the angle labels are visible.- Returns:
- A boolean.
- See Also:
setAngleLabelsVisible(boolean)
-
setAngleLabelsVisible
public void setAngleLabelsVisible(boolean visible)
Sets the flag that controls whether or not the angle labels are visible, and sends aPlotChangeEvent
to all registered listeners.- Parameters:
visible
- the flag.- See Also:
isAngleLabelsVisible()
-
getAngleLabelFont
public java.awt.Font getAngleLabelFont()
Returns the font used to display the angle labels.- Returns:
- A font (never
null
). - See Also:
setAngleLabelFont(Font)
-
setAngleLabelFont
public void setAngleLabelFont(java.awt.Font font)
Sets the font used to display the angle labels and sends aPlotChangeEvent
to all registered listeners.- Parameters:
font
- the font (null
not permitted).- See Also:
getAngleLabelFont()
-
getAngleLabelPaint
public java.awt.Paint getAngleLabelPaint()
Returns the paint used to display the angle labels.- Returns:
- A paint (never
null
). - See Also:
setAngleLabelPaint(Paint)
-
setAngleLabelPaint
public void setAngleLabelPaint(java.awt.Paint paint)
Sets the paint used to display the angle labels and sends aPlotChangeEvent
to all registered listeners.- Parameters:
paint
- the paint (null
not permitted).
-
isAngleGridlinesVisible
public boolean isAngleGridlinesVisible()
Returnstrue
if the angular gridlines are visible, andfalse
otherwise.- Returns:
true
orfalse
.- See Also:
setAngleGridlinesVisible(boolean)
-
setAngleGridlinesVisible
public void setAngleGridlinesVisible(boolean visible)
Sets the flag that controls whether or not the angular grid-lines are visible.If the flag value is changed, a
PlotChangeEvent
is sent to all registered listeners.- Parameters:
visible
- the new value of the flag.- See Also:
isAngleGridlinesVisible()
-
getAngleGridlineStroke
public java.awt.Stroke getAngleGridlineStroke()
Returns the stroke for the grid-lines (if any) plotted against the angular axis.- Returns:
- The stroke (possibly
null
). - See Also:
setAngleGridlineStroke(Stroke)
-
setAngleGridlineStroke
public void setAngleGridlineStroke(java.awt.Stroke stroke)
Sets the stroke for the grid lines plotted against the angular axis and sends aPlotChangeEvent
to all registered listeners.If you set this to
null
, no grid lines will be drawn.- Parameters:
stroke
- the stroke (null
permitted).- See Also:
getAngleGridlineStroke()
-
getAngleGridlinePaint
public java.awt.Paint getAngleGridlinePaint()
Returns the paint for the grid lines (if any) plotted against the angular axis.- Returns:
- The paint (possibly
null
). - See Also:
setAngleGridlinePaint(Paint)
-
setAngleGridlinePaint
public void setAngleGridlinePaint(java.awt.Paint paint)
Sets the paint for the grid lines plotted against the angular axis.If you set this to
null
, no grid lines will be drawn.- Parameters:
paint
- the paint (null
permitted).- See Also:
getAngleGridlinePaint()
-
isRadiusGridlinesVisible
public boolean isRadiusGridlinesVisible()
Returnstrue
if the radius axis grid is visible, andfalse
otherwise.- Returns:
true
orfalse
.- See Also:
setRadiusGridlinesVisible(boolean)
-
setRadiusGridlinesVisible
public void setRadiusGridlinesVisible(boolean visible)
Sets the flag that controls whether or not the radius axis grid lines are visible.If the flag value is changed, a
PlotChangeEvent
is sent to all registered listeners.- Parameters:
visible
- the new value of the flag.- See Also:
isRadiusGridlinesVisible()
-
getRadiusGridlineStroke
public java.awt.Stroke getRadiusGridlineStroke()
Returns the stroke for the grid lines (if any) plotted against the radius axis.- Returns:
- The stroke (possibly
null
). - See Also:
setRadiusGridlineStroke(Stroke)
-
setRadiusGridlineStroke
public void setRadiusGridlineStroke(java.awt.Stroke stroke)
Sets the stroke for the grid lines plotted against the radius axis and sends aPlotChangeEvent
to all registered listeners.If you set this to
null
, no grid lines will be drawn.- Parameters:
stroke
- the stroke (null
permitted).- See Also:
getRadiusGridlineStroke()
-
getRadiusGridlinePaint
public java.awt.Paint getRadiusGridlinePaint()
Returns the paint for the grid lines (if any) plotted against the radius axis.- Returns:
- The paint (possibly
null
). - See Also:
setRadiusGridlinePaint(Paint)
-
setRadiusGridlinePaint
public void setRadiusGridlinePaint(java.awt.Paint paint)
Sets the paint for the grid lines plotted against the radius axis and sends aPlotChangeEvent
to all registered listeners.If you set this to
null
, no grid lines will be drawn.- Parameters:
paint
- the paint (null
permitted).- See Also:
getRadiusGridlinePaint()
-
isRadiusMinorGridlinesVisible
public boolean isRadiusMinorGridlinesVisible()
Return the current value of the flag indicating if radial minor grid-lines will be drawn or not.- Returns:
- Returns
true
if radial minor grid-lines are drawn.
-
setRadiusMinorGridlinesVisible
public void setRadiusMinorGridlinesVisible(boolean flag)
Set the flag that determines if radial minor grid-lines will be drawn, and sends aPlotChangeEvent
to all registered listeners.- Parameters:
flag
-true
to draw the radial minor grid-lines,false
to hide them.
-
getMargin
public int getMargin()
Returns the margin around the plot area.- Returns:
- The actual margin in pixels.
-
setMargin
public void setMargin(int margin)
Set the margin around the plot area and sends aPlotChangeEvent
to all registered listeners.- Parameters:
margin
- The new margin in pixels.
-
getFixedLegendItems
public LegendItemCollection getFixedLegendItems()
Returns the fixed legend items, if any.- Returns:
- The legend items (possibly
null
). - See Also:
setFixedLegendItems(LegendItemCollection)
-
setFixedLegendItems
public void setFixedLegendItems(LegendItemCollection items)
Sets the fixed legend items for the plot. Leave this set tonull
if you prefer the legend items to be created automatically.- Parameters:
items
- the legend items (null
permitted).- See Also:
getFixedLegendItems()
-
addCornerTextItem
public void addCornerTextItem(java.lang.String text)
Add text to be displayed in the lower right hand corner and sends aPlotChangeEvent
to all registered listeners.- Parameters:
text
- the text to display (null
not permitted).- See Also:
removeCornerTextItem(String)
-
removeCornerTextItem
public void removeCornerTextItem(java.lang.String text)
Remove the given text from the list of corner text items and sends aPlotChangeEvent
to all registered listeners.- Parameters:
text
- the text to remove (null
ignored).- See Also:
addCornerTextItem(String)
-
clearCornerTextItems
public void clearCornerTextItems()
Clear the list of corner text items and sends aPlotChangeEvent
to all registered listeners.
-
refreshAngleTicks
protected java.util.List refreshAngleTicks()
Generates a list of tick values for the angular tick marks.- Returns:
- A list of
NumberTick
instances.
-
calculateTextAnchor
protected TextAnchor calculateTextAnchor(double angleDegrees)
Calculate the text position for the given degrees.- Parameters:
angleDegrees
- the angle in degrees.- Returns:
- The optimal text anchor.
-
mapDatasetToAxis
public void mapDatasetToAxis(int index, int axisIndex)
Maps a dataset to a particular axis. All data will be plotted against axis zero by default, no mapping is required for this case.- Parameters:
index
- the dataset index (zero-based).axisIndex
- the axis index.
-
mapDatasetToAxes
public void mapDatasetToAxes(int index, java.util.List axisIndices)
Maps the specified dataset to the axes in the list. Note that the conversion of data values into Java2D space is always performed using the first axis in the list.- Parameters:
index
- the dataset index (zero-based).axisIndices
- the axis indices (null
permitted).
-
checkAxisIndices
private void checkAxisIndices(java.util.List indices)
This method is used to perform argument checking on the list of axis indices passed to mapDatasetToAxes().- Parameters:
indices
- the list of indices (null
permitted).
-
getAxisForDataset
public ValueAxis getAxisForDataset(int index)
Returns the axis for a dataset.- Parameters:
index
- the dataset index.- Returns:
- The axis.
-
getAxisIndex
public int getAxisIndex(ValueAxis axis)
Returns the index of the given axis.- Parameters:
axis
- the axis.- Returns:
- The axis index or -1 if axis is not used in this plot.
-
getIndexOf
public int getIndexOf(PolarItemRenderer renderer)
Returns the index of the specified renderer, or-1
if the renderer is not assigned to this plot.- Parameters:
renderer
- the renderer (null
permitted).- Returns:
- The renderer index.
-
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).This plot relies on a
PolarItemRenderer
to draw each item in the plot. This allows the visual representation of the data to be changed easily.The optional info argument collects information about the rendering of the plot (dimensions, tooltip information etc). Just pass in
null
if you do not need this information.
-
drawCornerTextItems
protected void drawCornerTextItems(java.awt.Graphics2D g2, java.awt.geom.Rectangle2D area)
Draws the corner text items.- Parameters:
g2
- the drawing surface.area
- the area.
-
drawAxis
protected AxisState drawAxis(ValueAxis axis, PolarAxisLocation location, java.awt.Graphics2D g2, java.awt.geom.Rectangle2D plotArea)
Draws the axis with the specified index.- Parameters:
axis
- the axis.location
- the axis location.g2
- the graphics target.plotArea
- the plot area.- Returns:
- The axis state.
-
render
protected void render(java.awt.Graphics2D g2, java.awt.geom.Rectangle2D dataArea, PlotRenderingInfo info)
Draws a representation of the data within the dataArea region, using the current m_Renderer.- Parameters:
g2
- the graphics device.dataArea
- the region in which the data is to be drawn.info
- an optional object for collection dimension information (null
permitted).
-
drawGridlines
protected void drawGridlines(java.awt.Graphics2D g2, java.awt.geom.Rectangle2D dataArea, java.util.List angularTicks, java.util.List radialTicks)
Draws the gridlines for the plot, if they are visible.- Parameters:
g2
- the graphics device.dataArea
- the data area.angularTicks
- the ticks for the angular axis.radialTicks
- the ticks for the radial axis.
-
buildRadialTicks
protected java.util.List buildRadialTicks(java.util.List allTicks)
Create a list of ticks based on the given list and plot properties. Only ticks of a specific type may be in the result list.- Parameters:
allTicks
- A list of all available ticks for the primary axis.null
not permitted.- Returns:
- Ticks to use for radial gridlines.
-
zoom
public void zoom(double percent)
Zooms the axis ranges by the specified percentage about the anchor point.
-
getDatasetsMappedToAxis
private java.util.List getDatasetsMappedToAxis(java.lang.Integer axisIndex)
A utility method that returns a list of datasets that are mapped to a particular axis.- Parameters:
axisIndex
- the axis index (null
not permitted).- Returns:
- A list of datasets.
-
getDataRange
public Range getDataRange(ValueAxis axis)
Returns the range for the specified axis.- Specified by:
getDataRange
in interfaceValueAxisPlot
- Parameters:
axis
- the axis.- Returns:
- The range.
-
datasetChanged
public void datasetChanged(DatasetChangeEvent event)
Receives notification of a change to the plot's m_Dataset.The axis ranges are updated if necessary.
- Specified by:
datasetChanged
in interfaceDatasetChangeListener
- Overrides:
datasetChanged
in classPlot
- Parameters:
event
- information about the event (not used here).
-
rendererChanged
public void rendererChanged(RendererChangeEvent event)
Notifies all registered listeners of a property change.One source of property change events is the plot's m_Renderer.
- Specified by:
rendererChanged
in interfaceRendererChangeListener
- Parameters:
event
- information about the property change.
-
getLegendItems
public LegendItemCollection getLegendItems()
Returns the legend items for the plot. Each legend item is generated by the plot's m_Renderer, since the m_Renderer is responsible for the visual representation of the data.- Specified by:
getLegendItems
in interfaceLegendItemSource
- Overrides:
getLegendItems
in classPlot
- Returns:
- The legend items.
-
equals
public boolean equals(java.lang.Object obj)
Tests this plot for equality with another object.
-
clone
public java.lang.Object clone() throws java.lang.CloneNotSupportedException
Returns a clone of the plot.- Specified by:
clone
in interfacePublicCloneable
- Overrides:
clone
in classPlot
- Returns:
- A clone.
- Throws:
java.lang.CloneNotSupportedException
- this can occur if some component of the plot cannot be cloned.
-
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.
-
zoomDomainAxes
public void zoomDomainAxes(double factor, PlotRenderingInfo state, java.awt.geom.Point2D source)
This method is required by theZoomable
interface, but since the plot does not have any domain axes, it does nothing.- Specified by:
zoomDomainAxes
in interfaceZoomable
- Parameters:
factor
- the zoom factor.state
- the plot state.source
- the source point (in Java2D coordinates).- See Also:
Zoomable.zoomRangeAxes(double, PlotRenderingInfo, Point2D)
-
zoomDomainAxes
public void zoomDomainAxes(double factor, PlotRenderingInfo state, java.awt.geom.Point2D source, boolean useAnchor)
This method is required by theZoomable
interface, but since the plot does not have any domain axes, it does nothing.- Specified by:
zoomDomainAxes
in interfaceZoomable
- Parameters:
factor
- the zoom factor.state
- the plot state.source
- the source point (in Java2D coordinates).useAnchor
- use source point as zoom anchor?- See Also:
Zoomable.zoomRangeAxes(double, PlotRenderingInfo, Point2D, boolean)
-
zoomDomainAxes
public void zoomDomainAxes(double lowerPercent, double upperPercent, PlotRenderingInfo state, java.awt.geom.Point2D source)
This method is required by theZoomable
interface, but since the plot does not have any domain axes, it does nothing.- Specified by:
zoomDomainAxes
in interfaceZoomable
- Parameters:
lowerPercent
- the new lower bound.upperPercent
- the new upper bound.state
- the plot state.source
- the source point (in Java2D coordinates).- See Also:
Zoomable.zoomRangeAxes(double, double, PlotRenderingInfo, Point2D)
-
zoomRangeAxes
public void zoomRangeAxes(double factor, PlotRenderingInfo state, java.awt.geom.Point2D source)
Multiplies the range on the range axis/axes by the specified factor.- Specified by:
zoomRangeAxes
in interfaceZoomable
- Parameters:
factor
- the zoom factor.state
- the plot state.source
- the source point (in Java2D coordinates).- See Also:
Zoomable.zoomDomainAxes(double, PlotRenderingInfo, Point2D)
-
zoomRangeAxes
public void zoomRangeAxes(double factor, PlotRenderingInfo info, java.awt.geom.Point2D source, boolean useAnchor)
Multiplies the range on the range axis by the specified factor.- Specified by:
zoomRangeAxes
in interfaceZoomable
- Parameters:
factor
- the zoom factor.info
- the plot rendering info.source
- the source point (in Java2D space).useAnchor
- use source point as zoom anchor?- See Also:
zoomDomainAxes(double, PlotRenderingInfo, Point2D, boolean)
-
zoomRangeAxes
public void zoomRangeAxes(double lowerPercent, double upperPercent, PlotRenderingInfo state, java.awt.geom.Point2D source)
Zooms in on the range axes.- Specified by:
zoomRangeAxes
in interfaceZoomable
- Parameters:
lowerPercent
- the new lower bound.upperPercent
- the new upper bound.state
- the plot state.source
- the source point (in Java2D coordinates).- See Also:
Zoomable.zoomDomainAxes(double, double, PlotRenderingInfo, Point2D)
-
isDomainZoomable
public boolean isDomainZoomable()
Returnsfalse
always.- Specified by:
isDomainZoomable
in interfaceZoomable
- Returns:
false
always.- See Also:
Zoomable.isRangeZoomable()
-
isRangeZoomable
public boolean isRangeZoomable()
Returnstrue
to indicate that the range axis is zoomable.- Specified by:
isRangeZoomable
in interfaceZoomable
- Returns:
true
.- See Also:
Zoomable.isDomainZoomable()
-
getOrientation
public PlotOrientation getOrientation()
Returns the orientation of the plot.- Specified by:
getOrientation
in interfaceZoomable
- Returns:
- The orientation.
-
translateToJava2D
public java.awt.Point translateToJava2D(double angleDegrees, double radius, ValueAxis axis, java.awt.geom.Rectangle2D dataArea)
Translates a (theta, radius) pair into Java2D coordinates. Ifradius
is less than the lower bound of the axis, then this method returns the centre point.- Parameters:
angleDegrees
- the angle in degrees.radius
- the radius.axis
- the axis.dataArea
- the data area.- Returns:
- A point in Java2D space.
-
-