org.jfree.chart.plot

Class PolarPlot

Implemented Interfaces:
Cloneable, EventListener, AxisChangeListener, DatasetChangeListener, LegendItemSource, MarkerChangeListener, PublicCloneable, RendererChangeListener, Serializable, ValueAxisPlot, Zoomable

public class PolarPlot
extends Plot
implements ValueAxisPlot, Zoomable, RendererChangeListener, Cloneable, Serializable

Plots data that is in (theta, radius) pairs where theta equal to zero is due north and increases clockwise.

Field Summary

static Paint
DEFAULT_GRIDLINE_PAINT
The default grid line paint.
static Stroke
DEFAULT_GRIDLINE_STROKE
The default grid line stroke.
protected static ResourceBundle
localizationResources
The resourceBundle for the localization.

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

PolarPlot()
Default constructor.
PolarPlot(XYDataset dataset, ValueAxis radiusAxis, PolarItemRenderer renderer)
Creates a new plot.

Method Summary

void
addCornerTextItem(String text)
Add text to be displayed in the lower right hand corner and sends a PlotChangeEvent to all registered listeners.
void
clearCornerTextItems()
Clear the list of corner text items and sends a PlotChangeEvent to all registered listeners.
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(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 AxisState
drawAxis(Graphics2D g2, Rectangle2D plotArea, Rectangle2D dataArea)
A utility method for drawing the axes.
protected void
drawCornerTextItems(Graphics2D g2, Rectangle2D area)
Draws the corner text items.
protected void
drawGridlines(Graphics2D g2, Rectangle2D dataArea, List angularTicks, List radialTicks)
Draws the gridlines for the plot, if they are visible.
boolean
equals(Object obj)
Tests this plot for equality with another object.
Paint
getAngleGridlinePaint()
Returns the paint for the grid lines (if any) plotted against the angular axis.
Stroke
getAngleGridlineStroke()
Returns the stroke for the grid-lines (if any) plotted against the angular axis.
Font
getAngleLabelFont()
Returns the font used to display the angle labels.
Paint
getAngleLabelPaint()
Returns the paint used to display the angle labels.
ValueAxis
getAxis()
Returns the axis for the plot.
Range
getDataRange(ValueAxis axis)
Returns the range for the specified axis.
XYDataset
getDataset()
Returns the primary dataset for the plot.
LegendItemCollection
getLegendItems()
Returns the legend items for the plot.
double
getMaxRadius()
Returns the upper bound of the radius axis.
PlotOrientation
getOrientation()
Returns the orientation of the plot.
String
getPlotType()
Returns the plot type as a string.
Paint
getRadiusGridlinePaint()
Returns the paint for the grid lines (if any) plotted against the radius axis.
Stroke
getRadiusGridlineStroke()
Returns the stroke for the grid lines (if any) plotted against the radius axis.
PolarItemRenderer
getRenderer()
Returns the item renderer.
int
getSeriesCount()
Returns the number of series in the dataset for this plot.
boolean
isAngleGridlinesVisible()
Returns true if the angular gridlines are visible, and false otherwise.
boolean
isAngleLabelsVisible()
Returns a flag that controls whether or not the angle labels are visible.
boolean
isDomainZoomable()
Returns false always.
boolean
isRadiusGridlinesVisible()
Returns true if the radius axis grid is visible, and false otherwise.
boolean
isRangeZoomable()
Returns true to indicate that the range axis is zoomable.
void
removeCornerTextItem(String text)
Remove the given text from the list of corner text items and sends a PlotChangeEvent to all registered listeners.
protected void
render(Graphics2D g2, 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(Paint paint)
Sets the paint for the grid lines plotted against the angular axis.
void
setAngleGridlineStroke(Stroke stroke)
Sets the stroke for the grid lines plotted against the angular axis and sends a PlotChangeEvent to all registered listeners.
void
setAngleGridlinesVisible(boolean visible)
Sets the flag that controls whether or not the angular grid-lines are visible.
void
setAngleLabelFont(Font font)
Sets the font used to display the angle labels and sends a PlotChangeEvent to all registered listeners.
void
setAngleLabelPaint(Paint paint)
Sets the paint used to display the angle labels and sends a PlotChangeEvent to all registered listeners.
void
setAngleLabelsVisible(boolean visible)
Sets the flag that controls whether or not the angle labels are visible, and sends a PlotChangeEvent to all registered listeners.
void
setAxis(ValueAxis axis)
Sets the axis for the plot and sends a PlotChangeEvent to all registered listeners.
void
setDataset(XYDataset dataset)
Sets the dataset for the plot, replacing the existing dataset if there is one.
void
setRadiusGridlinePaint(Paint paint)
Sets the paint for the grid lines plotted against the radius axis and sends a PlotChangeEvent to all registered listeners.
void
setRadiusGridlineStroke(Stroke stroke)
Sets the stroke for the grid lines plotted against the radius axis and sends a PlotChangeEvent to all registered listeners.
void
setRadiusGridlinesVisible(boolean visible)
Sets the flag that controls whether or not the radius axis grid lines are visible.
void
setRenderer(PolarItemRenderer renderer)
Sets the item renderer, and notifies all listeners of a change to the plot.
Point
translateValueThetaRadiusToJava2D(double angleDegrees, double radius, Rectangle2D dataArea)
Translates a (theta, radius) pair into Java2D coordinates.
void
zoom(double percent)
Zooms the axis ranges by the specified percentage about the anchor point.
void
zoomDomainAxes(double lowerPercent, double upperPercent, PlotRenderingInfo state, Point2D source)
This method is required by the Zoomable interface, but since the plot does not have any domain axes, it does nothing.
void
zoomDomainAxes(double factor, PlotRenderingInfo state, Point2D source)
This method is required by the Zoomable interface, but since the plot does not have any domain axes, it does nothing.
void
zoomRangeAxes(double lowerPercent, double upperPercent, PlotRenderingInfo state, Point2D source)
Zooms in on the range axes.
void
zoomRangeAxes(double factor, PlotRenderingInfo state, Point2D source)
Multiplies the range on the range axis/axes by the specified factor.

Methods inherited from class org.jfree.chart.plot.Plot

addChangeListener, axisChanged, clone, datasetChanged, draw, drawBackground, drawBackgroundImage, drawNoDataMessage, drawOutline, equals, fillBackground, getBackgroundAlpha, getBackgroundImage, getBackgroundImageAlignment, getBackgroundImageAlpha, getBackgroundPaint, getDatasetGroup, getDrawingSupplier, getForegroundAlpha, getInsets, getLegendItems, getNoDataMessage, getNoDataMessageFont, getNoDataMessagePaint, getOutlinePaint, getOutlineStroke, getParent, getPlotType, getRectX, getRectY, getRootPlot, handleClick, isSubplot, markerChanged, notifyListeners, removeChangeListener, resolveDomainAxisLocation, resolveRangeAxisLocation, setBackgroundAlpha, setBackgroundImage, setBackgroundImageAlignment, setBackgroundImageAlpha, setBackgroundPaint, setDatasetGroup, setDrawingSupplier, setForegroundAlpha, setInsets, setInsets, setNoDataMessage, setNoDataMessageFont, setNoDataMessagePaint, setOutlinePaint, setOutlineStroke, setParent, zoom

Field Details

DEFAULT_GRIDLINE_PAINT

public static final Paint DEFAULT_GRIDLINE_PAINT
The default grid line paint.

DEFAULT_GRIDLINE_STROKE

public static final Stroke DEFAULT_GRIDLINE_STROKE
The default grid line stroke.

localizationResources

protected static ResourceBundle localizationResources
The resourceBundle for the localization.

Constructor Details

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 Details

addCornerTextItem

public void addCornerTextItem(String text)
Add text to be displayed in the lower right hand corner and sends a PlotChangeEvent to all registered listeners.
Parameters:
text - the text to display (null not permitted).

clearCornerTextItems

public void clearCornerTextItems()
Clear the list of corner text items and sends a PlotChangeEvent to all registered listeners.

clone

public Object clone()
            throws CloneNotSupportedException
Returns a clone of the plot.
Overrides:
clone in interface Plot
Returns:
A clone.

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 interface DatasetChangeListener
Overrides:
datasetChanged in interface Plot
Parameters:
event - information about the event (not used here).

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

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.

Overrides:
draw in interface Plot
Parameters:
g2 - the graphics device.
area - the area within which the plot (including axes and labels) should be drawn.
anchor - the anchor point (null permitted).
parentState - ignored.
info - collects chart drawing information (null permitted).

drawAxis

protected AxisState drawAxis(Graphics2D g2,
                             Rectangle2D plotArea,
                             Rectangle2D dataArea)
A utility method for drawing the axes.
Parameters:
g2 - the graphics device.
plotArea - the plot area.
dataArea - the data area.
Returns:
A map containing the axis states.

drawCornerTextItems

protected void drawCornerTextItems(Graphics2D g2,
                                   Rectangle2D area)
Draws the corner text items.
Parameters:
g2 - the drawing surface.
area - the area.

drawGridlines

protected void drawGridlines(Graphics2D g2,
                             Rectangle2D dataArea,
                             List angularTicks,
                             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.

equals

public boolean equals(Object obj)
Tests this plot for equality with another object.
Overrides:
equals in interface Plot
Parameters:
obj - the object (null permitted).
Returns:
true or false.

getAngleGridlinePaint

public Paint getAngleGridlinePaint()
Returns the paint for the grid lines (if any) plotted against the angular axis.
Returns:
The paint (possibly null).

getAngleGridlineStroke

public Stroke getAngleGridlineStroke()
Returns the stroke for the grid-lines (if any) plotted against the angular axis.
Returns:
The stroke (possibly null).

getAngleLabelFont

public Font getAngleLabelFont()
Returns the font used to display the angle labels.
Returns:
A font (never null).

getAngleLabelPaint

public Paint getAngleLabelPaint()
Returns the paint used to display the angle labels.
Returns:
A paint (never null).

getAxis

public ValueAxis getAxis()
Returns the axis for the plot.
Returns:
The radius axis (possibly null).

getDataRange

public Range getDataRange(ValueAxis axis)
Returns the range for the specified axis.
Specified by:
getDataRange in interface ValueAxisPlot
Parameters:
axis - the axis.
Returns:
The range.

getDataset

public XYDataset getDataset()
Returns the primary dataset for the plot.
Returns:
The primary dataset (possibly null).

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 interface LegendItemSource
Overrides:
getLegendItems in interface Plot
Returns:
The legend items.

getMaxRadius

public double getMaxRadius()
Returns the upper bound of the radius axis.
Returns:
The upper bound.

getOrientation

public PlotOrientation getOrientation()
Returns the orientation of the plot.
Specified by:
getOrientation in interface Zoomable
Returns:
The orientation.

getPlotType

public String getPlotType()
Returns the plot type as a string.
Overrides:
getPlotType in interface Plot
Returns:
A short string describing the type of plot.

getRadiusGridlinePaint

public Paint getRadiusGridlinePaint()
Returns the paint for the grid lines (if any) plotted against the radius axis.
Returns:
The paint (possibly null).

getRadiusGridlineStroke

public Stroke getRadiusGridlineStroke()
Returns the stroke for the grid lines (if any) plotted against the radius axis.
Returns:
The stroke (possibly null).

getRenderer

public PolarItemRenderer getRenderer()
Returns the item renderer.
Returns:
The renderer (possibly null).

getSeriesCount

public int getSeriesCount()
Returns the number of series in the dataset for this plot. If the dataset is null, the method returns 0.
Returns:
The series count.

isAngleGridlinesVisible

public boolean isAngleGridlinesVisible()
Returns true if the angular gridlines are visible, and false otherwise.
Returns:
true or false.

isAngleLabelsVisible

public boolean isAngleLabelsVisible()
Returns a flag that controls whether or not the angle labels are visible.
Returns:
A boolean.

isDomainZoomable

public boolean isDomainZoomable()
Returns false always.
Specified by:
isDomainZoomable in interface Zoomable
Returns:
false always.

isRadiusGridlinesVisible

public boolean isRadiusGridlinesVisible()
Returns true if the radius axis grid is visible, and false otherwise.
Returns:
true or false.

isRangeZoomable

public boolean isRangeZoomable()
Returns true to indicate that the range axis is zoomable.
Specified by:
isRangeZoomable in interface Zoomable
Returns:
true.

removeCornerTextItem

public void removeCornerTextItem(String text)
Remove the given text from the list of corner text items and sends a PlotChangeEvent to all registered listeners.
Parameters:
text - the text to remove (null ignored).

render

protected void render(Graphics2D g2,
                      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).

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 interface RendererChangeListener
Parameters:
event - information about the property change.

setAngleGridlinePaint

public void setAngleGridlinePaint(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).

setAngleGridlineStroke

public void setAngleGridlineStroke(Stroke stroke)
Sets the stroke for the grid lines plotted against the angular axis and sends a PlotChangeEvent to all registered listeners.

If you set this to null, no grid lines will be drawn.

Parameters:
stroke - the stroke (null permitted).

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.

setAngleLabelFont

public void setAngleLabelFont(Font font)
Sets the font used to display the angle labels and sends a PlotChangeEvent to all registered listeners.
Parameters:
font - the font (null not permitted).

setAngleLabelPaint

public void setAngleLabelPaint(Paint paint)
Sets the paint used to display the angle labels and sends a PlotChangeEvent to all registered listeners.
Parameters:
paint - the paint (null not permitted).

setAngleLabelsVisible

public void setAngleLabelsVisible(boolean visible)
Sets the flag that controls whether or not the angle labels are visible, and sends a PlotChangeEvent to all registered listeners.
Parameters:
visible - the flag.

setAxis

public void setAxis(ValueAxis axis)
Sets the axis for the plot and sends a PlotChangeEvent to all registered listeners.
Parameters:
axis - the new axis (null permitted).

setDataset

public void setDataset(XYDataset dataset)
Sets the dataset for the plot, replacing the existing dataset if there is one.
Parameters:
dataset - the dataset (null permitted).
See Also:
getDataset()

setRadiusGridlinePaint

public void setRadiusGridlinePaint(Paint paint)
Sets the paint for the grid lines plotted against the radius axis and sends a PlotChangeEvent to all registered listeners.

If you set this to null, no grid lines will be drawn.

Parameters:
paint - the paint (null permitted).

setRadiusGridlineStroke

public void setRadiusGridlineStroke(Stroke stroke)
Sets the stroke for the grid lines plotted against the radius axis and sends a PlotChangeEvent to all registered listeners.

If you set this to null, no grid lines will be drawn.

Parameters:
stroke - the stroke (null permitted).

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.

setRenderer

public void setRenderer(PolarItemRenderer renderer)
Sets the item renderer, and notifies all listeners of a change to the plot.

If the renderer is set to null, no chart will be drawn.

Parameters:
renderer - the new renderer (null permitted).
See Also:
getRenderer()

translateValueThetaRadiusToJava2D

public Point translateValueThetaRadiusToJava2D(double angleDegrees,
                                               double radius,
                                               Rectangle2D dataArea)
Translates a (theta, radius) pair into Java2D coordinates. If radius 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.
dataArea - the data area.
Returns:
A point in Java2D space.

zoom

public void zoom(double percent)
Zooms the axis ranges by the specified percentage about the anchor point.
Overrides:
zoom in interface Plot
Parameters:
percent - the amount of the zoom.

zoomDomainAxes

public void zoomDomainAxes(double lowerPercent,
                           double upperPercent,
                           PlotRenderingInfo state,
                           Point2D source)
This method is required by the Zoomable interface, but since the plot does not have any domain axes, it does nothing.
Specified by:
zoomDomainAxes in interface Zoomable
Parameters:
lowerPercent - the new lower bound.
upperPercent - the new upper bound.
state - the plot state.
source - the source point (in Java2D coordinates).

zoomDomainAxes

public void zoomDomainAxes(double factor,
                           PlotRenderingInfo state,
                           Point2D source)
This method is required by the Zoomable interface, but since the plot does not have any domain axes, it does nothing.
Specified by:
zoomDomainAxes in interface Zoomable
Parameters:
factor - the zoom factor.
state - the plot state.
source - the source point (in Java2D coordinates).

zoomRangeAxes

public void zoomRangeAxes(double lowerPercent,
                          double upperPercent,
                          PlotRenderingInfo state,
                          Point2D source)
Zooms in on the range axes.
Specified by:
zoomRangeAxes in interface Zoomable
Parameters:
lowerPercent - the new lower bound.
upperPercent - the new upper bound.
state - the plot state.
source - the source point (in Java2D coordinates).

zoomRangeAxes

public void zoomRangeAxes(double factor,
                          PlotRenderingInfo state,
                          Point2D source)
Multiplies the range on the range axis/axes by the specified factor.
Specified by:
zoomRangeAxes in interface Zoomable
Parameters:
factor - the zoom factor.
state - the plot state.
source - the source point (in Java2D coordinates).