Class Axis

  • All Implemented Interfaces:
    java.io.Serializable, java.lang.Cloneable
    Direct Known Subclasses:
    CategoryAxis, ValueAxis

    public abstract class Axis
    extends java.lang.Object
    implements java.lang.Cloneable, java.io.Serializable
    The base class for all axes in JFreeChart. Subclasses are divided into those that display values (ValueAxis) and those that display categories (CategoryAxis).
    See Also:
    Serialized Form
    • Field Detail

      • serialVersionUID

        private static final long serialVersionUID
        For serialization.
        See Also:
        Constant Field Values
      • DEFAULT_AXIS_VISIBLE

        public static final boolean DEFAULT_AXIS_VISIBLE
        The default axis visibility (true).
        See Also:
        Constant Field Values
      • DEFAULT_AXIS_LABEL_FONT

        public static final java.awt.Font DEFAULT_AXIS_LABEL_FONT
        The default axis label font (Font("SansSerif", Font.PLAIN, 12)).
      • DEFAULT_AXIS_LABEL_PAINT

        public static final java.awt.Paint DEFAULT_AXIS_LABEL_PAINT
        The default axis label paint (Color.BLACK).
      • DEFAULT_AXIS_LABEL_INSETS

        public static final RectangleInsets DEFAULT_AXIS_LABEL_INSETS
        The default axis label insets (RectangleInsets(3.0, 3.0, 3.0, 3.0)).
      • DEFAULT_AXIS_LINE_PAINT

        public static final java.awt.Paint DEFAULT_AXIS_LINE_PAINT
        The default axis line paint (Color.GRAY).
      • DEFAULT_AXIS_LINE_STROKE

        public static final java.awt.Stroke DEFAULT_AXIS_LINE_STROKE
        The default axis line stroke (BasicStroke(0.5f)).
      • DEFAULT_TICK_LABELS_VISIBLE

        public static final boolean DEFAULT_TICK_LABELS_VISIBLE
        The default tick labels visibility (true).
        See Also:
        Constant Field Values
      • DEFAULT_TICK_LABEL_FONT

        public static final java.awt.Font DEFAULT_TICK_LABEL_FONT
        The default tick label font (Font("SansSerif", Font.PLAIN, 10)).
      • DEFAULT_TICK_LABEL_PAINT

        public static final java.awt.Paint DEFAULT_TICK_LABEL_PAINT
        The default tick label paint (Color.BLACK).
      • DEFAULT_TICK_LABEL_INSETS

        public static final RectangleInsets DEFAULT_TICK_LABEL_INSETS
        The default tick label insets (RectangleInsets(2.0, 4.0, 2.0, 4.0)).
      • DEFAULT_TICK_MARKS_VISIBLE

        public static final boolean DEFAULT_TICK_MARKS_VISIBLE
        The default tick marks visible (true).
        See Also:
        Constant Field Values
      • DEFAULT_TICK_MARK_STROKE

        public static final java.awt.Stroke DEFAULT_TICK_MARK_STROKE
        The default tick stroke (BasicStroke(0.5f)).
      • DEFAULT_TICK_MARK_PAINT

        public static final java.awt.Paint DEFAULT_TICK_MARK_PAINT
        The default tick paint (Color.GRAY).
      • DEFAULT_TICK_MARK_INSIDE_LENGTH

        public static final float DEFAULT_TICK_MARK_INSIDE_LENGTH
        The default tick mark inside length (0.0f).
        See Also:
        Constant Field Values
      • DEFAULT_TICK_MARK_OUTSIDE_LENGTH

        public static final float DEFAULT_TICK_MARK_OUTSIDE_LENGTH
        The default tick mark outside length (2.0f).
        See Also:
        Constant Field Values
      • visible

        private boolean visible
        A flag indicating whether or not the axis is visible.
      • label

        private java.lang.String label
        The label for the axis.
      • attributedLabel

        private transient java.text.AttributedString attributedLabel
        An attributed label for the axis (overrides label if non-null). We have to use this override method to preserve the API compatibility.
      • labelFont

        private java.awt.Font labelFont
        The font for displaying the axis label.
      • labelPaint

        private transient java.awt.Paint labelPaint
        The paint for drawing the axis label.
      • labelInsets

        private RectangleInsets labelInsets
        The insets for the axis label.
      • labelAngle

        private double labelAngle
        The label angle.
      • labelLocation

        private AxisLabelLocation labelLocation
        The axis label location (new in 1.0.16).
      • axisLineVisible

        private boolean axisLineVisible
        A flag that controls whether or not the axis line is visible.
      • axisLineStroke

        private transient java.awt.Stroke axisLineStroke
        The stroke used for the axis line.
      • axisLinePaint

        private transient java.awt.Paint axisLinePaint
        The paint used for the axis line.
      • tickLabelsVisible

        private boolean tickLabelsVisible
        A flag that indicates whether or not tick labels are visible for the axis.
      • tickLabelFont

        private java.awt.Font tickLabelFont
        The font used to display the tick labels.
      • tickLabelPaint

        private transient java.awt.Paint tickLabelPaint
        The color used to display the tick labels.
      • tickLabelInsets

        private RectangleInsets tickLabelInsets
        The blank space around each tick label.
      • tickMarksVisible

        private boolean tickMarksVisible
        A flag that indicates whether or not major tick marks are visible for the axis.
      • tickMarkInsideLength

        private float tickMarkInsideLength
        The length of the major tick mark inside the data area (zero permitted).
      • tickMarkOutsideLength

        private float tickMarkOutsideLength
        The length of the major tick mark outside the data area (zero permitted).
      • minorTickMarksVisible

        private boolean minorTickMarksVisible
        A flag that indicates whether or not minor tick marks are visible for the axis.
      • minorTickMarkInsideLength

        private float minorTickMarkInsideLength
        The length of the minor tick mark inside the data area (zero permitted).
      • minorTickMarkOutsideLength

        private float minorTickMarkOutsideLength
        The length of the minor tick mark outside the data area (zero permitted).
      • tickMarkStroke

        private transient java.awt.Stroke tickMarkStroke
        The stroke used to draw tick marks.
      • tickMarkPaint

        private transient java.awt.Paint tickMarkPaint
        The paint used to draw tick marks.
      • fixedDimension

        private double fixedDimension
        The fixed (horizontal or vertical) dimension for the axis.
      • plot

        private transient Plot plot
        A reference back to the plot that the axis is assigned to (can be null).
      • listenerList

        private transient javax.swing.event.EventListenerList listenerList
        Storage for registered listeners.
    • Constructor Detail

      • Axis

        protected Axis​(java.lang.String label)
        Constructs an axis with the specific label and default values for other attributes.
        Parameters:
        label - the axis label (null permitted).
    • Method Detail

      • isVisible

        public boolean isVisible()
        Returns true if the axis is visible, and false otherwise.
        Returns:
        A boolean.
        See Also:
        setVisible(boolean)
      • setVisible

        public void setVisible​(boolean flag)
        Sets a flag that controls whether or not the axis is visible and sends an AxisChangeEvent to all registered listeners.
        Parameters:
        flag - the flag.
        See Also:
        isVisible()
      • getAttributedLabel

        public java.text.AttributedString getAttributedLabel()
        Returns the attributed label (the returned value is a copy, so modifying it will not impact the state of the axis). The default value is null.
        Returns:
        The attributed label (possibly null).
      • setAttributedLabel

        public void setAttributedLabel​(java.lang.String label)
        Sets the attributed label for the axis and sends an AxisChangeEvent to all registered listeners. This is a convenience method that converts the string into an AttributedString using the current font attributes.
        Parameters:
        label - the label (null permitted).
      • setAttributedLabel

        public void setAttributedLabel​(java.text.AttributedString label)
        Sets the attributed label for the axis and sends an AxisChangeEvent to all registered listeners.
        Parameters:
        label - the label (null permitted).
      • createAttributedLabel

        public java.text.AttributedString createAttributedLabel​(java.lang.String label)
        Creates and returns an AttributedString with the specified text and the labelFont and labelPaint applied as attributes.
        Parameters:
        label - the label (null permitted).
        Returns:
        An attributed string or null.
      • getLabelFont

        public java.awt.Font getLabelFont()
        Returns the font for the axis label.
        Returns:
        The font (never null).
        See Also:
        setLabelFont(Font)
      • setLabelFont

        public void setLabelFont​(java.awt.Font font)
        Sets the font for the axis label and sends an AxisChangeEvent to all registered listeners.
        Parameters:
        font - the font (null not permitted).
        See Also:
        getLabelFont()
      • getLabelPaint

        public java.awt.Paint getLabelPaint()
        Returns the color/shade used to draw the axis label.
        Returns:
        The paint (never null).
        See Also:
        setLabelPaint(Paint)
      • setLabelPaint

        public void setLabelPaint​(java.awt.Paint paint)
        Sets the paint used to draw the axis label and sends an AxisChangeEvent to all registered listeners.
        Parameters:
        paint - the paint (null not permitted).
        See Also:
        getLabelPaint()
      • getLabelInsets

        public RectangleInsets getLabelInsets()
        Returns the insets for the label (that is, the amount of blank space that should be left around the label).
        Returns:
        The label insets (never null).
        See Also:
        setLabelInsets(RectangleInsets)
      • setLabelInsets

        public void setLabelInsets​(RectangleInsets insets)
        Sets the insets for the axis label, and sends an AxisChangeEvent to all registered listeners.
        Parameters:
        insets - the insets (null not permitted).
        See Also:
        getLabelInsets()
      • setLabelInsets

        public void setLabelInsets​(RectangleInsets insets,
                                   boolean notify)
        Sets the insets for the axis label, and sends an AxisChangeEvent to all registered listeners.
        Parameters:
        insets - the insets (null not permitted).
        notify - notify listeners?
      • getLabelAngle

        public double getLabelAngle()
        Returns the angle of the axis label.
        Returns:
        The angle (in radians).
        See Also:
        setLabelAngle(double)
      • setLabelAngle

        public void setLabelAngle​(double angle)
        Sets the angle for the label and sends an AxisChangeEvent to all registered listeners.
        Parameters:
        angle - the angle (in radians).
        See Also:
        getLabelAngle()
      • setLabelLocation

        public void setLabelLocation​(AxisLabelLocation location)
        Sets the axis label location and sends an AxisChangeEvent to all registered listeners.
        Parameters:
        location - the new location (null not permitted).
      • getAxisLinePaint

        public java.awt.Paint getAxisLinePaint()
        Returns the paint used to draw the axis line.
        Returns:
        The paint (never null).
        See Also:
        setAxisLinePaint(Paint)
      • setAxisLinePaint

        public void setAxisLinePaint​(java.awt.Paint paint)
        Sets the paint used to draw the axis line and sends an AxisChangeEvent to all registered listeners.
        Parameters:
        paint - the paint (null not permitted).
        See Also:
        getAxisLinePaint()
      • getAxisLineStroke

        public java.awt.Stroke getAxisLineStroke()
        Returns the stroke used to draw the axis line.
        Returns:
        The stroke (never null).
        See Also:
        setAxisLineStroke(Stroke)
      • setAxisLineStroke

        public void setAxisLineStroke​(java.awt.Stroke stroke)
        Sets the stroke used to draw the axis line and sends an AxisChangeEvent to all registered listeners.
        Parameters:
        stroke - the stroke (null not permitted).
        See Also:
        getAxisLineStroke()
      • isMinorTickMarksVisible

        public boolean isMinorTickMarksVisible()
        Returns the flag that indicates whether or not the minor tick marks are showing.
        Returns:
        The flag that indicates whether or not the minor tick marks are showing.
        See Also:
        setMinorTickMarksVisible(boolean)
      • setMinorTickMarksVisible

        public void setMinorTickMarksVisible​(boolean flag)
        Sets the flag that indicates whether or not the minor tick marks are showing and sends an AxisChangeEvent to all registered listeners.
        Parameters:
        flag - the flag.
        See Also:
        isMinorTickMarksVisible()
      • getTickLabelFont

        public java.awt.Font getTickLabelFont()
        Returns the font used for the tick labels (if showing).
        Returns:
        The font (never null).
        See Also:
        setTickLabelFont(Font)
      • setTickLabelFont

        public void setTickLabelFont​(java.awt.Font font)
        Sets the font for the tick labels and sends an AxisChangeEvent to all registered listeners.
        Parameters:
        font - the font (null not allowed).
        See Also:
        getTickLabelFont()
      • getTickLabelPaint

        public java.awt.Paint getTickLabelPaint()
        Returns the color/shade used for the tick labels.
        Returns:
        The paint used for the tick labels.
        See Also:
        setTickLabelPaint(Paint)
      • setTickLabelPaint

        public void setTickLabelPaint​(java.awt.Paint paint)
        Sets the paint used to draw tick labels (if they are showing) and sends an AxisChangeEvent to all registered listeners.
        Parameters:
        paint - the paint (null not permitted).
        See Also:
        getTickLabelPaint()
      • setTickLabelInsets

        public void setTickLabelInsets​(RectangleInsets insets)
        Sets the insets for the tick labels and sends an AxisChangeEvent to all registered listeners.
        Parameters:
        insets - the insets (null not permitted).
        See Also:
        getTickLabelInsets()
      • isTickMarksVisible

        public boolean isTickMarksVisible()
        Returns the flag that indicates whether or not the tick marks are showing.
        Returns:
        The flag that indicates whether or not the tick marks are showing.
        See Also:
        setTickMarksVisible(boolean)
      • setTickMarksVisible

        public void setTickMarksVisible​(boolean flag)
        Sets the flag that indicates whether or not the tick marks are showing and sends an AxisChangeEvent to all registered listeners.
        Parameters:
        flag - the flag.
        See Also:
        isTickMarksVisible()
      • setTickMarkInsideLength

        public void setTickMarkInsideLength​(float length)
        Sets the inside length of the tick marks and sends an AxisChangeEvent to all registered listeners.
        Parameters:
        length - the new length.
        See Also:
        getTickMarkInsideLength()
      • setTickMarkOutsideLength

        public void setTickMarkOutsideLength​(float length)
        Sets the outside length of the tick marks and sends an AxisChangeEvent to all registered listeners.
        Parameters:
        length - the new length.
        See Also:
        getTickMarkInsideLength()
      • getTickMarkStroke

        public java.awt.Stroke getTickMarkStroke()
        Returns the stroke used to draw tick marks.
        Returns:
        The stroke (never null).
        See Also:
        setTickMarkStroke(Stroke)
      • setTickMarkStroke

        public void setTickMarkStroke​(java.awt.Stroke stroke)
        Sets the stroke used to draw tick marks and sends an AxisChangeEvent to all registered listeners.
        Parameters:
        stroke - the stroke (null not permitted).
        See Also:
        getTickMarkStroke()
      • getTickMarkPaint

        public java.awt.Paint getTickMarkPaint()
        Returns the paint used to draw tick marks (if they are showing).
        Returns:
        The paint (never null).
        See Also:
        setTickMarkPaint(Paint)
      • setTickMarkPaint

        public void setTickMarkPaint​(java.awt.Paint paint)
        Sets the paint used to draw tick marks and sends an AxisChangeEvent to all registered listeners.
        Parameters:
        paint - the paint (null not permitted).
        See Also:
        getTickMarkPaint()
      • setMinorTickMarkInsideLength

        public void setMinorTickMarkInsideLength​(float length)
        Sets the inside length of the minor tick marks and sends an AxisChangeEvent to all registered listeners.
        Parameters:
        length - the new length.
        See Also:
        getMinorTickMarkInsideLength()
      • setMinorTickMarkOutsideLength

        public void setMinorTickMarkOutsideLength​(float length)
        Sets the outside length of the minor tick marks and sends an AxisChangeEvent to all registered listeners.
        Parameters:
        length - the new length.
        See Also:
        getMinorTickMarkInsideLength()
      • getPlot

        public Plot getPlot()
        Returns the plot that the axis is assigned to. This method will return null if the axis is not currently assigned to a plot.
        Returns:
        The plot that the axis is assigned to (possibly null).
        See Also:
        setPlot(Plot)
      • setPlot

        public void setPlot​(Plot plot)
        Sets a reference to the plot that the axis is assigned to.

        This method is used internally, you shouldn't need to call it yourself.

        Parameters:
        plot - the plot.
        See Also:
        getPlot()
      • getFixedDimension

        public double getFixedDimension()
        Returns the fixed dimension for the axis.
        Returns:
        The fixed dimension.
        See Also:
        setFixedDimension(double)
      • setFixedDimension

        public void setFixedDimension​(double dimension)
        Sets the fixed dimension for the axis.

        This is used when combining more than one plot on a chart. In this case, there may be several axes that need to have the same height or width so that they are aligned. This method is used to fix a dimension for the axis (the context determines whether the dimension is horizontal or vertical).

        Parameters:
        dimension - the fixed dimension.
        See Also:
        getFixedDimension()
      • configure

        public abstract void configure()
        Configures the axis to work with the current plot. Override this method to perform any special processing (such as auto-rescaling).
      • reserveSpace

        public abstract AxisSpace reserveSpace​(java.awt.Graphics2D g2,
                                               Plot plot,
                                               java.awt.geom.Rectangle2D plotArea,
                                               RectangleEdge edge,
                                               AxisSpace space)
        Estimates the space (height or width) required to draw the axis.
        Parameters:
        g2 - the graphics device.
        plot - the plot that the axis belongs to.
        plotArea - the area within which the plot (including axes) should be drawn.
        edge - the axis location.
        space - space already reserved.
        Returns:
        The space required to draw the axis (including pre-reserved space).
      • draw

        public abstract AxisState draw​(java.awt.Graphics2D g2,
                                       double cursor,
                                       java.awt.geom.Rectangle2D plotArea,
                                       java.awt.geom.Rectangle2D dataArea,
                                       RectangleEdge edge,
                                       PlotRenderingInfo plotState)
        Draws the axis on a Java 2D graphics device (such as the screen or a printer).
        Parameters:
        g2 - the graphics device (null not permitted).
        cursor - the cursor location (determines where to draw the axis).
        plotArea - the area within which the axes and plot should be drawn.
        dataArea - the area within which the data should be drawn.
        edge - the axis location (null not permitted).
        plotState - collects information about the plot (null permitted).
        Returns:
        The axis state (never null).
      • refreshTicks

        public abstract java.util.List refreshTicks​(java.awt.Graphics2D g2,
                                                    AxisState state,
                                                    java.awt.geom.Rectangle2D dataArea,
                                                    RectangleEdge edge)
        Calculates the positions of the ticks for the axis, storing the results in the tick list (ready for drawing).
        Parameters:
        g2 - the graphics device.
        state - the axis state.
        dataArea - the area inside the axes.
        edge - the edge on which the axis is located.
        Returns:
        The list of ticks.
      • createAndAddEntity

        protected void createAndAddEntity​(double cursor,
                                          AxisState state,
                                          java.awt.geom.Rectangle2D dataArea,
                                          RectangleEdge edge,
                                          PlotRenderingInfo plotState)
        Creates an entity for the axis and adds it to the rendering info. If plotState is null, this means that rendering info is not being collected so this method simply returns without doing anything.
        Parameters:
        cursor - the initial cursor value.
        state - the axis state after completion of the drawing with a possibly updated cursor position.
        dataArea - the data area.
        edge - the edge (null not permitted).
        plotState - the PlotRenderingInfo from which a reference to the entity collection can be obtained (null permitted).
      • hasListener

        public boolean hasListener​(java.util.EventListener listener)
        Returns true if the specified object is registered with the dataset as a listener. Most applications won't need to call this method, it exists mainly for use by unit testing code.
        Parameters:
        listener - the listener.
        Returns:
        A boolean.
      • notifyListeners

        protected void notifyListeners​(AxisChangeEvent event)
        Notifies all registered listeners that the axis has changed. The AxisChangeEvent provides information about the change.
        Parameters:
        event - information about the change to the axis.
      • fireChangeEvent

        protected void fireChangeEvent()
        Sends an AxisChangeEvent to all registered listeners.
      • getLabelEnclosure

        protected java.awt.geom.Rectangle2D getLabelEnclosure​(java.awt.Graphics2D g2,
                                                              RectangleEdge edge)
        Returns a rectangle that encloses the axis label. This is typically used for layout purposes (it gives the maximum dimensions of the label).
        Parameters:
        g2 - the graphics device.
        edge - the edge of the plot area along which the axis is measuring.
        Returns:
        The enclosing rectangle.
      • labelLocationX

        protected double labelLocationX​(AxisLabelLocation location,
                                        java.awt.geom.Rectangle2D dataArea)
        Returns the x-coordinate for the point to which the axis label should be aligned.
        Parameters:
        location - the axis label location (null not permitted).
        dataArea - the display area in which the data will be rendered (null not permitted).
        Returns:
        The x-coordinate.
      • labelLocationY

        protected double labelLocationY​(AxisLabelLocation location,
                                        java.awt.geom.Rectangle2D dataArea)
        Returns the y-coordinate for the point to which the axis label should be aligned.
        Parameters:
        location - the location (null not permitted).
        dataArea - the data area (null not permitted).
        Returns:
        The y-coordinate.
      • labelAnchorH

        protected TextAnchor labelAnchorH​(AxisLabelLocation location)
        Returns the appropriate horizontal text anchor for the specified axis location.
        Parameters:
        location - the location (null not permitted).
        Returns:
        The text anchor (never null).
      • labelAnchorV

        protected TextAnchor labelAnchorV​(AxisLabelLocation location)
        Returns the appropriate vertical text anchor for the specified axis location.
        Parameters:
        location - the location (null not permitted).
        Returns:
        The text anchor (never null).
      • drawLabel

        protected AxisState drawLabel​(java.lang.String label,
                                      java.awt.Graphics2D g2,
                                      java.awt.geom.Rectangle2D plotArea,
                                      java.awt.geom.Rectangle2D dataArea,
                                      RectangleEdge edge,
                                      AxisState state)
        Draws the axis label.
        Parameters:
        label - the label text.
        g2 - the graphics device.
        plotArea - the plot area.
        dataArea - the area inside the axes.
        edge - the location of the axis.
        state - the axis state (null not permitted).
        Returns:
        Information about the axis.
      • drawAttributedLabel

        protected AxisState drawAttributedLabel​(java.text.AttributedString label,
                                                java.awt.Graphics2D g2,
                                                java.awt.geom.Rectangle2D plotArea,
                                                java.awt.geom.Rectangle2D dataArea,
                                                RectangleEdge edge,
                                                AxisState state)
        Draws the axis label.
        Parameters:
        label - the label text.
        g2 - the graphics device.
        plotArea - the plot area.
        dataArea - the area inside the axes.
        edge - the location of the axis.
        state - the axis state (null not permitted).
        Returns:
        Information about the axis.
      • drawAxisLine

        protected void drawAxisLine​(java.awt.Graphics2D g2,
                                    double cursor,
                                    java.awt.geom.Rectangle2D dataArea,
                                    RectangleEdge edge)
        Draws an axis line at the current cursor position and edge.
        Parameters:
        g2 - the graphics device.
        cursor - the cursor position.
        dataArea - the data area.
        edge - the edge.
      • clone

        public java.lang.Object clone()
                               throws java.lang.CloneNotSupportedException
        Returns a clone of the axis.
        Overrides:
        clone in class java.lang.Object
        Returns:
        A clone.
        Throws:
        java.lang.CloneNotSupportedException - if some component of the axis does not support cloning.
      • equals

        public boolean equals​(java.lang.Object obj)
        Tests this axis for equality with another object.
        Overrides:
        equals in class java.lang.Object
        Parameters:
        obj - the object (null permitted).
        Returns:
        true or false.
      • hashCode

        public int hashCode()
        Returns a hash code for this instance.
        Overrides:
        hashCode in class java.lang.Object
        Returns:
        A hash code.
      • 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.