Class DateAxis

All Implemented Interfaces:
Serializable, Cloneable, org.jfree.util.PublicCloneable

public class DateAxis
extends ValueAxis
implements Cloneable, Serializable
The base class for axes that display dates.

You will find it easier to understand how this axis works if you bear in mind that it really displays/measures integer (or long) data, where the integers are milliseconds since midnight, 1-Jan-1970. When displaying tick labels, the millisecond values are converted back to dates using a DateFormat instance.

You can also create a Timeline and supply in the constructor to create an axis that only contains certain domain values. For example, this allows you to create a date axis that only contains working days.

See Also:
Serialized Form
  • Field Details

    • DEFAULT_DATE_RANGE

      public static final DateRange DEFAULT_DATE_RANGE
      The default axis range.
    • DEFAULT_AUTO_RANGE_MINIMUM_SIZE_IN_MILLISECONDS

      public static final double DEFAULT_AUTO_RANGE_MINIMUM_SIZE_IN_MILLISECONDS
      The default minimum auto range size.
      See Also:
      Constant Field Values
    • DEFAULT_DATE_TICK_UNIT

      public static final DateTickUnit DEFAULT_DATE_TICK_UNIT
      The default date tick unit.
    • DEFAULT_ANCHOR_DATE

      public static final Date DEFAULT_ANCHOR_DATE
      The default anchor date.
  • Constructor Details

    • DateAxis

      public DateAxis()
      Default constructor.
    • DateAxis

      public DateAxis​(String label)
      Creates a date axis.
      Parameters:
      label - the axis label (null permitted).
    • DateAxis

      public DateAxis​(String label, Timeline timeline)
      Creates a date axis. A timeline is specified for the axis. This allows special transformations to occure between a domain of values and the values included in the axis.
      Parameters:
      label - the axis label (null permitted).
      timeline - the underlying timeline to use for the axis.
      See Also:
      SegmentedTimeline
  • Method Details

    • equals

      public boolean equals​(Object object)
      Tests an object for equality with this instance.
      Overrides:
      equals in class ValueAxis
      Parameters:
      object - the object to test.
      Returns:
      A boolean.
    • getTimeline

      public Timeline getTimeline()
      Returns the underlying timeline used by this axis.
      Returns:
      The timeline.
    • setTimeline

      public void setTimeline​(Timeline timeline)
      Sets the underlying timeline to use for this axis.

      If the timeline is changed, an AxisChangeEvent is sent to all registered listeners.

      Parameters:
      timeline - the new timeline.
    • getTickUnit

      public DateTickUnit getTickUnit()
      Returns the tick unit for the axis.
      Returns:
      the tick unit for the axis.
    • setTickUnit

      public void setTickUnit​(DateTickUnit unit)
      Sets the tick unit for the axis. The auto-tick-unit-selection flag is set to false, and registered listeners are notified that the axis has been changed.
      Parameters:
      unit - the new tick unit.
    • setTickUnit

      public void setTickUnit​(DateTickUnit unit, boolean notify, boolean turnOffAutoSelection)
      Sets the tick unit attribute without any other side effects.
      Parameters:
      unit - the new tick unit.
      notify - notify registered listeners?
      turnOffAutoSelection - turn off auto selection?
    • getDateFormatOverride

      public DateFormat getDateFormatOverride()
      Returns the date format override. If this is non-null, then it will be used to format the dates on the axis.
      Returns:
      the date format override.
    • setDateFormatOverride

      public void setDateFormatOverride​(DateFormat formatter)
      Sets the date format override. If this is non-null, then it will be used to format the dates on the axis.
      Parameters:
      formatter - the date formatter (null permitted).
    • setRange

      public void setRange​(Range range)
      Sets the upper and lower bounds for the axis and sends an AxisChangeEvent to all registered listeners. As a side-effect, the auto-range flag is set to false.
      Overrides:
      setRange in class ValueAxis
      Parameters:
      range - the new range (null not permitted).
    • setRange

      public void setRange​(Range range, boolean turnOffAutoRange, boolean notify)
      Sets the range for the axis, if requested, sends an AxisChangeEvent to all registered listeners. As a side-effect, the auto-range flag is set to false (optional).
      Overrides:
      setRange in class ValueAxis
      Parameters:
      range - the range (null not permitted).
      turnOffAutoRange - a flag that controls whether or not the auto range is turned off.
      notify - a flag that controls whether or not listeners are notified.
    • setRange

      public void setRange​(Date lower, Date upper)
      Sets the axis range. An AxisChangeEvent is sent to all registered listeners.
      Parameters:
      lower - the lower bound for the axis.
      upper - the upper bound for the axis.
    • setRange

      public void setRange​(double lower, double upper)
      Sets the axis range. An AxisChangeEvent is sent to all registered listeners.
      Overrides:
      setRange in class ValueAxis
      Parameters:
      lower - the lower bound for the axis.
      upper - the upper bound for the axis.
    • getMinimumDate

      public Date getMinimumDate()
      Returns the earliest date visible on the axis.
      Returns:
      the earliest date visible on the axis.
    • setMinimumDate

      public void setMinimumDate​(Date minimumDate)
      Sets the minimum date visible on the axis. An AxisChangeEvent is sent to all registered listeners.
      Parameters:
      minimumDate - the new minimum date.
    • getMaximumDate

      public Date getMaximumDate()
      Returns the latest date visible on the axis.
      Returns:
      the latest date visible on the axis.
    • setMaximumDate

      public void setMaximumDate​(Date maximumDate)
      Sets the maximum date visible on the axis. An AxisChangeEvent is sent to all registered listeners.
      Parameters:
      maximumDate - the new maximum date.
    • getTickMarkPosition

      public DateTickMarkPosition getTickMarkPosition()
      Returns the tick mark position (start, middle or end of the time period).
      Returns:
      The position.
    • setTickMarkPosition

      public void setTickMarkPosition​(DateTickMarkPosition position)
      Sets the tick mark position (start, middle or end of the time period). An AxisChangeEvent is sent to all registered listeners.
      Parameters:
      position - the new position.
    • configure

      public void configure()
      Configures the axis to work with the specified plot. If the axis has auto-scaling, then sets the maximum and minimum values.
      Specified by:
      configure in class Axis
    • isHiddenValue

      public boolean isHiddenValue​(long millis)
      Returns true if the axis hides this value, and false otherwise.
      Parameters:
      millis - the data value.
      Returns:
      A value.
    • valueToJava2D

      public double valueToJava2D​(double value, Rectangle2D area, org.jfree.ui.RectangleEdge edge)
      Translates the data value to the display coordinates (Java 2D User Space) of the chart.
      Specified by:
      valueToJava2D in class ValueAxis
      Parameters:
      value - the date to be plotted.
      area - the rectangle (in Java2D space) where the data is to be plotted.
      edge - the axis location.
      Returns:
      the coordinate corresponding to the supplied data value.
    • dateToJava2D

      public double dateToJava2D​(Date date, Rectangle2D area, org.jfree.ui.RectangleEdge edge)
      Translates a date to Java2D coordinates, based on the range displayed by this axis for the specified data area.
      Parameters:
      date - the date.
      area - the rectangle (in Java2D space) where the data is to be plotted.
      edge - the axis location.
      Returns:
      the coordinate corresponding to the supplied date.
    • java2DToValue

      public double java2DToValue​(double java2DValue, Rectangle2D area, org.jfree.ui.RectangleEdge edge)
      Translates a Java2D coordinate into the corresponding data value. To perform this translation, you need to know the area used for plotting data, and which edge the axis is located on.
      Specified by:
      java2DToValue in class ValueAxis
      Parameters:
      java2DValue - the coordinate in Java2D space.
      area - the rectangle (in Java2D space) where the data is to be plotted.
      edge - the axis location.
      Returns:
      A data value.
    • calculateLowestVisibleTickValue

      public Date calculateLowestVisibleTickValue​(DateTickUnit unit)
      Calculates the value of the lowest visible tick on the axis.
      Parameters:
      unit - date unit to use.
      Returns:
      The value of the lowest visible tick on the axis.
    • calculateHighestVisibleTickValue

      public Date calculateHighestVisibleTickValue​(DateTickUnit unit)
      Calculates the value of the highest visible tick on the axis.
      Parameters:
      unit - date unit to use.
      Returns:
      the value of the highest visible tick on the axis.
    • createStandardDateTickUnits

      public static TickUnitSource createStandardDateTickUnits()
      Returns a collection of standard date tick units that uses the default time zone. This collection will be used by default, but you are free to create your own collection if you want to (see the setStandardTickUnits() method inherited from the ValueAxis class).
      Returns:
      A collection of standard date tick units.
    • createStandardDateTickUnits

      public static TickUnitSource createStandardDateTickUnits​(TimeZone zone)
      Returns a collection of standard date tick units. This collection will be used by default, but you are free to create your own collection if you want to (see the setStandardTickUnits(...) method inherited from the ValueAxis class).
      Parameters:
      zone - the time zone.
      Returns:
      A collection of standard date tick units.
    • refreshTicks

      public List refreshTicks​(Graphics2D g2, AxisState state, Rectangle2D plotArea, Rectangle2D dataArea, org.jfree.ui.RectangleEdge edge)
      Calculates the positions of the tick labels for the axis, storing the results in the tick label list (ready for drawing).
      Specified by:
      refreshTicks in class Axis
      Parameters:
      g2 - the graphics device.
      state - the axis state.
      plotArea - the area in which the plot and the axes should be drawn.
      dataArea - the area in which the plot should be drawn.
      edge - the location of the axis.
      Returns:
      A list of ticks.
    • refreshTicksHorizontal

      public List refreshTicksHorizontal​(Graphics2D g2, double cursor, Rectangle2D plotArea, Rectangle2D dataArea, org.jfree.ui.RectangleEdge edge)
      Recalculates the ticks for the date axis.
      Parameters:
      g2 - the graphics device.
      cursor - the cursor location.
      plotArea - the area in which the axes and data are to be drawn.
      dataArea - the area in which the data is to be drawn.
      edge - the location of the axis.
      Returns:
      A list of ticks.
    • refreshTicksVertical

      public List refreshTicksVertical​(Graphics2D g2, double cursor, Rectangle2D plotArea, Rectangle2D dataArea, org.jfree.ui.RectangleEdge edge)
      Recalculates the ticks for the date axis.
      Parameters:
      g2 - the graphics device.
      cursor - the cursor location.
      plotArea - the area in which the plot and the axes should be drawn.
      dataArea - the area in which the plot should be drawn.
      edge - the location of the axis.
      Returns:
      A list of ticks.
    • draw

      public AxisState draw​(Graphics2D g2, double cursor, Rectangle2D plotArea, Rectangle2D dataArea, org.jfree.ui.RectangleEdge edge, PlotRenderingInfo plotState)
      Draws the axis on a Java 2D graphics device (such as the screen or a printer).
      Specified by:
      draw in class Axis
      Parameters:
      g2 - the graphics device (null not permitted).
      cursor - the cursor location.
      plotArea - the area within which the axes and data should be drawn (null not permitted).
      dataArea - the area within which the data should be drawn (null not permitted).
      edge - the location of the axis (null not permitted).
      plotState - collects information about the plot (null permitted).
      Returns:
      the axis state (never null).
    • zoomRange

      public void zoomRange​(double lowerPercent, double upperPercent)
      Zooms in on the current range.
      Overrides:
      zoomRange in class ValueAxis
      Parameters:
      lowerPercent - the new lower bound.
      upperPercent - the new upper bound.
    • clone

      public Object clone() throws CloneNotSupportedException
      Returns a clone of the object.
      Specified by:
      clone in interface org.jfree.util.PublicCloneable
      Overrides:
      clone in class ValueAxis
      Returns:
      A clone.
      Throws:
      CloneNotSupportedException - if some component of the axis does not support cloning.
    • translateValueToJava2D

      public double translateValueToJava2D​(double value, Rectangle2D area, org.jfree.ui.RectangleEdge edge)
      Deprecated.
      Use valueToJava2D instead.
      Translates the data value to the display coordinates (Java 2D User Space) of the chart.
      Overrides:
      translateValueToJava2D in class ValueAxis
      Parameters:
      value - the date to be plotted.
      area - the rectangle (in Java2D space) where the data is to be plotted.
      edge - the axis location.
      Returns:
      the coordinate corresponding to the supplied data value.
    • translateJava2DToValue

      public double translateJava2DToValue​(double java2DValue, Rectangle2D area, org.jfree.ui.RectangleEdge edge)
      Deprecated.
      Use java2DToValue instead.
      Translates a Java2D coordinate into the corresponding data value. To perform this translation, you need to know the area used for plotting data, and which edge the axis is located on.
      Overrides:
      translateJava2DToValue in class ValueAxis
      Parameters:
      java2DValue - the coordinate in Java2D space.
      area - the rectangle (in Java2D space) where the data is to be plotted.
      edge - the axis location.
      Returns:
      A data value.
    • translateDateToJava2D

      public double translateDateToJava2D​(Date date, Rectangle2D area, org.jfree.ui.RectangleEdge edge)
      Deprecated.
      Use dataToJava2D() instead.
      Translates a date to Java2D coordinates, based on the range displayed by this axis for the specified data area.
      Parameters:
      date - the date.
      area - the rectangle (in Java2D space) where the data is to be plotted.
      edge - the axis location.
      Returns:
      the coordinate corresponding to the supplied date.