public class

CyclicNumberAxis

extends NumberAxis
java.lang.Object
   ↳ org.jfree.chart.axis.Axis
     ↳ org.jfree.chart.axis.ValueAxis
       ↳ org.jfree.chart.axis.NumberAxis
         ↳ org.jfree.chart.axis.CyclicNumberAxis

Class Overview

This class extends NumberAxis and handles cycling. Traditional representation of data in the range x0..x1

|-------------------------|
x0                       x1
Here, the range bounds are at the axis extremities. With cyclic axis, however, the time is split in "cycles", or "time frames", or the same duration : the period. A cycle axis cannot by definition handle a larger interval than the period :
x1 - x0 >= period
. Thus, at most a full period can be represented with such an axis. The cycle bound is the number between x0 and x1 which marks the beginning of new time frame:
|---------------------|----------------------------|
x0                   cb                           x1
<---previous cycle---><-------current cycle-------->
It is actually a multiple of the period, plus optionally a start offset:
cb = n * period + offset
Thus, by definition, two consecutive cycle bounds period apart, which is precisely why it is called a period. The visual representation of a cyclic axis is like that:
|----------------------------|---------------------|
cb                         x1|x0                  cb
<-------current cycle--------><---previous cycle--->
The cycle bound is at the axis ends, then current cycle is shown, then the last cycle. When using dynamic data, the visual effect is the current cycle erases the last cycle as x grows. Then, the next cycle bound is reached, and the process starts over, erasing the previous cycle. A Cyclic item renderer is provided to do exactly this.

Summary

Nested Classes
class CyclicNumberAxis.CycleBoundTick A special Number tick that also hold information about the cycle bound mapping for this tick. 
[Expand]
Inherited Constants
From class org.jfree.chart.axis.NumberAxis
From class org.jfree.chart.axis.ValueAxis
From class org.jfree.chart.axis.Axis
Fields
public static final Paint DEFAULT_ADVANCE_LINE_PAINT The default axis line paint.
public static Stroke DEFAULT_ADVANCE_LINE_STROKE The default axis line stroke.
protected Paint advanceLinePaint The advance line paint.
protected Stroke advanceLineStroke The advance line stroke.
protected boolean advanceLineVisible A flag that controls whether or not the advance line is visible.
protected boolean boundMappedToLastCycle ??.
protected double offset The offset.
protected double period The period.
[Expand]
Inherited Fields
From class org.jfree.chart.axis.NumberAxis
From class org.jfree.chart.axis.ValueAxis
From class org.jfree.chart.axis.Axis
Public Constructors
CyclicNumberAxis(double period)
Creates a CycleNumberAxis with the given period.
CyclicNumberAxis(double period, double offset)
Creates a CycleNumberAxis with the given period and offset.
CyclicNumberAxis(double period, String label)
Creates a named CycleNumberAxis with the given period.
CyclicNumberAxis(double period, double offset, String label)
Creates a named CycleNumberAxis with the given period and offset.
Public Methods
void centerRange(double value)
Centers the range about the given value.
AxisState draw(Graphics2D g2, double cursor, Rectangle2D plotArea, Rectangle2D dataArea, RectangleEdge edge, PlotRenderingInfo plotState)
Draws the axis.
boolean equals(Object obj)
Tests the axis for equality with another object.
Paint getAdvanceLinePaint()
The advance line is the line drawn at the limit of the current cycle, when erasing the previous cycle.
Stroke getAdvanceLineStroke()
The advance line is the line drawn at the limit of the current cycle, when erasing the previous cycle.
double getCycleBound()
The cycle bound is defined as the higest value x such that "offset + period * i = x", with i and integer and x < range.getUpperBound() This is the value which is at both ends of the axis : x...up|low...x The values from x to up are the valued in the current cycle.
double getOffset()
The cycle bound is a multiple of the period, plus optionally a start offset.
double getPeriod()
The cycle bound is a multiple of the period, plus optionally a start offset.
boolean isAdvanceLineVisible()
The advance line is the line drawn at the limit of the current cycle, when erasing the previous cycle.
boolean isBoundMappedToLastCycle()
The cycle bound can be associated either with the current or with the last cycle.
double java2DToValue(double java2DValue, Rectangle2D dataArea, RectangleEdge edge)
Converts a coordinate from Java 2D space to data space.
AxisSpace reserveSpace(Graphics2D g2, Plot plot, Rectangle2D plotArea, RectangleEdge edge, AxisSpace space)
Reserve some space on each axis side because we draw a centered label at each extremity.
void setAdvanceLinePaint(Paint paint)
The advance line is the line drawn at the limit of the current cycle, when erasing the previous cycle.
void setAdvanceLineStroke(Stroke stroke)
The advance line is the line drawn at the limit of the current cycle, when erasing the previous cycle.
void setAdvanceLineVisible(boolean visible)
The advance line is the line drawn at the limit of the current cycle, when erasing the previous cycle.
void setAutoRangeMinimumSize(double size, boolean notify)
This function is nearly useless since the auto range is fixed for this class to the period.
void setBoundMappedToLastCycle(boolean boundMappedToLastCycle)
The cycle bound can be associated either with the current or with the last cycle.
void setFixedAutoRange(double length)
The auto range is fixed for this class to the period by default.
void setOffset(double offset)
The cycle bound is a multiple of the period, plus optionally a start offset.
void setPeriod(double period)
The cycle bound is a multiple of the period, plus optionally a start offset.
void setRange(Range range, boolean turnOffAutoRange, boolean notify)
Sets a new axis range.
double valueToJava2D(double value, Rectangle2D dataArea, RectangleEdge edge)
Translates a value from data space to Java 2D space.
Protected Methods
float[] calculateAnchorPoint(ValueTick tick, double cursor, Rectangle2D dataArea, RectangleEdge edge)
Calculates the anchor point for a tick.
AxisState drawTickMarksAndLabels(Graphics2D g2, double cursor, Rectangle2D plotArea, Rectangle2D dataArea, RectangleEdge edge)
Draws the tick marks and labels.
List refreshTicksHorizontal(Graphics2D g2, Rectangle2D dataArea, RectangleEdge edge)
Builds a list of ticks for the axis.
List refreshVerticalTicks(Graphics2D g2, Rectangle2D dataArea, RectangleEdge edge)
Builds a list of ticks for the axis.
void selectHorizontalAutoTickUnit(Graphics2D g2, Rectangle2D drawArea, Rectangle2D dataArea, RectangleEdge edge)
Selects a tick unit when the axis is displayed horizontally.
void selectVerticalAutoTickUnit(Graphics2D g2, Rectangle2D drawArea, Rectangle2D dataArea, RectangleEdge edge)
Selects a tick unit when the axis is displayed vertically.
[Expand]
Inherited Methods
From class org.jfree.chart.axis.NumberAxis
From class org.jfree.chart.axis.ValueAxis
From class org.jfree.chart.axis.Axis
From class java.lang.Object

Fields

public static final Paint DEFAULT_ADVANCE_LINE_PAINT

The default axis line paint.

public static Stroke DEFAULT_ADVANCE_LINE_STROKE

The default axis line stroke.

protected Paint advanceLinePaint

The advance line paint.

protected Stroke advanceLineStroke

The advance line stroke.

protected boolean advanceLineVisible

A flag that controls whether or not the advance line is visible.

protected boolean boundMappedToLastCycle

??.

protected double offset

The offset.

protected double period

The period.

Public Constructors

public CyclicNumberAxis (double period)

Creates a CycleNumberAxis with the given period.

Parameters
period the period.

public CyclicNumberAxis (double period, double offset)

Creates a CycleNumberAxis with the given period and offset.

Parameters
period the period.
offset the offset.

public CyclicNumberAxis (double period, String label)

Creates a named CycleNumberAxis with the given period.

Parameters
period the period.
label the label.

public CyclicNumberAxis (double period, double offset, String label)

Creates a named CycleNumberAxis with the given period and offset.

Parameters
period the period.
offset the offset.
label the label.

Public Methods

public void centerRange (double value)

Centers the range about the given value.

Parameters
value the data value.

public AxisState draw (Graphics2D g2, double cursor, Rectangle2D plotArea, Rectangle2D dataArea, RectangleEdge edge, PlotRenderingInfo plotState)

Draws the axis.

Parameters
g2 the graphics device (null not permitted).
cursor the cursor position.
plotArea the plot area (null not permitted).
dataArea the data area (null not permitted).
edge the edge (null not permitted).
plotState collects information about the plot (null permitted).
Returns
  • The axis state (never null).

public boolean equals (Object obj)

Tests the axis for equality with another object.

Parameters
obj the object to test against.
Returns
  • A boolean.

public Paint getAdvanceLinePaint ()

The advance line is the line drawn at the limit of the current cycle, when erasing the previous cycle.

Returns
  • The paint (never null).

public Stroke getAdvanceLineStroke ()

The advance line is the line drawn at the limit of the current cycle, when erasing the previous cycle.

Returns
  • The stroke (never null).

public double getCycleBound ()

The cycle bound is defined as the higest value x such that "offset + period * i = x", with i and integer and x < range.getUpperBound() This is the value which is at both ends of the axis : x...up|low...x The values from x to up are the valued in the current cycle. The values from low to x are the valued in the previous cycle.

Returns
  • The cycle bound.

public double getOffset ()

The cycle bound is a multiple of the period, plus optionally a start offset.

cb = n * period + offset

Returns
  • The current offset.
See Also

public double getPeriod ()

The cycle bound is a multiple of the period, plus optionally a start offset.

cb = n * period + offset

Returns
  • The current period.
See Also

public boolean isAdvanceLineVisible ()

The advance line is the line drawn at the limit of the current cycle, when erasing the previous cycle.

Returns
  • A boolean.

public boolean isBoundMappedToLastCycle ()

The cycle bound can be associated either with the current or with the last cycle. It's up to the user's choice to decide which, as this is just a convention. By default, the cycle bound is mapped to the current cycle.
Note that this has no effect on visual appearance, as the cycle bound is mapped successively for both axis ends. Use this function for correct results in translateValueToJava2D.

Returns
  • true if the cycle bound is mapped to the last cycle, false if it is bound to the current cycle (default)

public double java2DToValue (double java2DValue, Rectangle2D dataArea, RectangleEdge edge)

Converts a coordinate from Java 2D space to data space.

Parameters
java2DValue the coordinate in Java2D space.
dataArea the data area.
edge the edge.
Returns
  • The data value.

public AxisSpace reserveSpace (Graphics2D g2, Plot plot, Rectangle2D plotArea, RectangleEdge edge, AxisSpace space)

Reserve some space on each axis side because we draw a centered label at each extremity.

Parameters
g2 the graphics device.
plot the plot.
plotArea the plot area.
edge the edge.
space the space already reserved.
Returns
  • The reserved space.

public void setAdvanceLinePaint (Paint paint)

The advance line is the line drawn at the limit of the current cycle, when erasing the previous cycle.

Parameters
paint the paint (null not permitted).

public void setAdvanceLineStroke (Stroke stroke)

The advance line is the line drawn at the limit of the current cycle, when erasing the previous cycle.

Parameters
stroke the stroke (null not permitted).

public void setAdvanceLineVisible (boolean visible)

The advance line is the line drawn at the limit of the current cycle, when erasing the previous cycle.

Parameters
visible the flag.

public void setAutoRangeMinimumSize (double size, boolean notify)

This function is nearly useless since the auto range is fixed for this class to the period. The period is extended if necessary to fit the minimum size.

Parameters
size the size.
notify notify?

public void setBoundMappedToLastCycle (boolean boundMappedToLastCycle)

The cycle bound can be associated either with the current or with the last cycle. It's up to the user's choice to decide which, as this is just a convention. By default, the cycle bound is mapped to the current cycle.
Note that this has no effect on visual appearance, as the cycle bound is mapped successively for both axis ends. Use this function for correct results in valueToJava2D.

Parameters
boundMappedToLastCycle Set it to true to map the cycle bound to the last cycle.

public void setFixedAutoRange (double length)

The auto range is fixed for this class to the period by default. This function will thus set a new period.

Parameters
length the length.

public void setOffset (double offset)

The cycle bound is a multiple of the period, plus optionally a start offset.

cb = n * period + offset

Parameters
offset The offset to set.
See Also

public void setPeriod (double period)

The cycle bound is a multiple of the period, plus optionally a start offset.

cb = n * period + offset

Parameters
period The period to set.
See Also

public void setRange (Range range, boolean turnOffAutoRange, boolean notify)

Sets a new axis range. The period is extended to fit the range size, if necessary.

Parameters
range the range.
turnOffAutoRange switch off the auto range.
notify notify?

public double valueToJava2D (double value, Rectangle2D dataArea, RectangleEdge edge)

Translates a value from data space to Java 2D space.

Parameters
value the data value.
dataArea the data area.
edge the edge.
Returns
  • The Java 2D value.

Protected Methods

protected float[] calculateAnchorPoint (ValueTick tick, double cursor, Rectangle2D dataArea, RectangleEdge edge)

Calculates the anchor point for a tick.

Parameters
tick the tick.
cursor the cursor.
dataArea the data area.
edge the side on which the axis is displayed.
Returns
  • The anchor point.

protected AxisState drawTickMarksAndLabels (Graphics2D g2, double cursor, Rectangle2D plotArea, Rectangle2D dataArea, RectangleEdge edge)

Draws the tick marks and labels.

Parameters
g2 the graphics device.
cursor the cursor.
plotArea the plot area.
dataArea the area inside the axes.
edge the side on which the axis is displayed.
Returns
  • The axis state.

protected List refreshTicksHorizontal (Graphics2D g2, Rectangle2D dataArea, RectangleEdge edge)

Builds a list of ticks for the axis. This method is called when the axis is at the top or bottom of the chart (so the axis is "horizontal").

Parameters
g2 the graphics device.
dataArea the data area.
edge the edge.
Returns
  • A list of ticks.

protected List refreshVerticalTicks (Graphics2D g2, Rectangle2D dataArea, RectangleEdge edge)

Builds a list of ticks for the axis. This method is called when the axis is at the left or right of the chart (so the axis is "vertical").

Parameters
g2 the graphics device.
dataArea the data area.
edge the edge.
Returns
  • A list of ticks.

protected void selectHorizontalAutoTickUnit (Graphics2D g2, Rectangle2D drawArea, Rectangle2D dataArea, RectangleEdge edge)

Selects a tick unit when the axis is displayed horizontally.

Parameters
g2 the graphics device.
drawArea the drawing area.
dataArea the data area.
edge the side of the rectangle on which the axis is displayed.

protected void selectVerticalAutoTickUnit (Graphics2D g2, Rectangle2D drawArea, Rectangle2D dataArea, RectangleEdge edge)

Selects a tick unit when the axis is displayed vertically.

Parameters
g2 the graphics device.
drawArea the drawing area.
dataArea the data area.
edge the side of the rectangle on which the axis is displayed.