Module platform

Class CategoryAxis

java.lang.Object
org.jfree.chart.axis.Axis
org.jfree.chart.axis.CategoryAxis
All Implemented Interfaces:
Serializable, Cloneable
Direct Known Subclasses:
ExtendedCategoryAxis, SubCategoryAxis

public class CategoryAxis extends Axis implements Cloneable, Serializable
An axis that displays categories.
See Also:
  • Field Details

    • DEFAULT_AXIS_MARGIN

      public static final double DEFAULT_AXIS_MARGIN
      The default margin for the axis (used for both lower and upper margins).
      See Also:
    • DEFAULT_CATEGORY_MARGIN

      public static final double DEFAULT_CATEGORY_MARGIN
      The default margin between categories (a percentage of the overall axis length).
      See Also:
  • Constructor Details

    • CategoryAxis

      public CategoryAxis()
      Creates a new category axis with no label.
    • CategoryAxis

      public CategoryAxis(String label)
      Constructs a category axis, using default values where necessary.
      Parameters:
      label - the axis label (null permitted).
  • Method Details

    • getLowerMargin

      public double getLowerMargin()
      Returns the lower margin for the axis.
      Returns:
      The margin.
      See Also:
    • setLowerMargin

      public void setLowerMargin(double margin)
      Sets the lower margin for the axis and sends an AxisChangeEvent to all registered listeners.
      Parameters:
      margin - the margin as a percentage of the axis length (for example, 0.05 is five percent).
      See Also:
    • getUpperMargin

      public double getUpperMargin()
      Returns the upper margin for the axis.
      Returns:
      The margin.
      See Also:
    • setUpperMargin

      public void setUpperMargin(double margin)
      Sets the upper margin for the axis and sends an AxisChangeEvent to all registered listeners.
      Parameters:
      margin - the margin as a percentage of the axis length (for example, 0.05 is five percent).
      See Also:
    • getCategoryMargin

      public double getCategoryMargin()
      Returns the category margin.
      Returns:
      The margin.
      See Also:
    • setCategoryMargin

      public void setCategoryMargin(double margin)
      Sets the category margin and sends an AxisChangeEvent to all registered listeners. The overall category margin is distributed over N-1 gaps, where N is the number of categories on the axis.
      Parameters:
      margin - the margin as a percentage of the axis length (for example, 0.05 is five percent).
      See Also:
    • getMaximumCategoryLabelLines

      public int getMaximumCategoryLabelLines()
      Returns the maximum number of lines to use for each category label.
      Returns:
      The maximum number of lines.
      See Also:
    • setMaximumCategoryLabelLines

      public void setMaximumCategoryLabelLines(int lines)
      Sets the maximum number of lines to use for each category label and sends an AxisChangeEvent to all registered listeners.
      Parameters:
      lines - the maximum number of lines.
      See Also:
    • getMaximumCategoryLabelWidthRatio

      public float getMaximumCategoryLabelWidthRatio()
      Returns the category label width ratio.
      Returns:
      The ratio.
      See Also:
    • setMaximumCategoryLabelWidthRatio

      public void setMaximumCategoryLabelWidthRatio(float ratio)
      Sets the maximum category label width ratio and sends an AxisChangeEvent to all registered listeners.
      Parameters:
      ratio - the ratio.
      See Also:
    • getCategoryLabelPositionOffset

      public int getCategoryLabelPositionOffset()
      Returns the offset between the axis and the category labels (before label positioning is taken into account).
      Returns:
      The offset (in Java2D units).
      See Also:
    • setCategoryLabelPositionOffset

      public void setCategoryLabelPositionOffset(int offset)
      Sets the offset between the axis and the category labels (before label positioning is taken into account) and sends a change event to all registered listeners.
      Parameters:
      offset - the offset (in Java2D units).
      See Also:
    • getCategoryLabelPositions

      public CategoryLabelPositions getCategoryLabelPositions()
      Returns the category label position specification (this contains label positioning info for all four possible axis locations).
      Returns:
      The positions (never null).
      See Also:
    • setCategoryLabelPositions

      public void setCategoryLabelPositions(CategoryLabelPositions positions)
      Sets the category label position specification for the axis and sends an AxisChangeEvent to all registered listeners.
      Parameters:
      positions - the positions (null not permitted).
      See Also:
    • getTickLabelFont

      public Font getTickLabelFont(Comparable category)
      Returns the font for the tick label for the given category.
      Parameters:
      category - the category (null not permitted).
      Returns:
      The font (never null).
      See Also:
    • setTickLabelFont

      public void setTickLabelFont(Comparable category, Font font)
      Sets the font for the tick label for the specified category and sends an AxisChangeEvent to all registered listeners.
      Parameters:
      category - the category (null not permitted).
      font - the font (null permitted).
      See Also:
    • getTickLabelPaint

      public Paint getTickLabelPaint(Comparable category)
      Returns the paint for the tick label for the given category.
      Parameters:
      category - the category (null not permitted).
      Returns:
      The paint (never null).
      See Also:
    • setTickLabelPaint

      public void setTickLabelPaint(Comparable category, Paint paint)
      Sets the paint for the tick label for the specified category and sends an AxisChangeEvent to all registered listeners.
      Parameters:
      category - the category (null not permitted).
      paint - the paint (null permitted).
      See Also:
    • addCategoryLabelToolTip

      public void addCategoryLabelToolTip(Comparable category, String tooltip)
      Adds a tooltip to the specified category and sends an AxisChangeEvent to all registered listeners.
      Parameters:
      category - the category (null not permitted).
      tooltip - the tooltip text (null permitted).
      See Also:
    • getCategoryLabelToolTip

      public String getCategoryLabelToolTip(Comparable category)
      Returns the tool tip text for the label belonging to the specified category.
      Parameters:
      category - the category (null not permitted).
      Returns:
      The tool tip text (possibly null).
      See Also:
    • removeCategoryLabelToolTip

      public void removeCategoryLabelToolTip(Comparable category)
      Removes the tooltip for the specified category and, if there was a value associated with that category, sends an AxisChangeEvent to all registered listeners.
      Parameters:
      category - the category (null not permitted).
      See Also:
    • clearCategoryLabelToolTips

      public void clearCategoryLabelToolTips()
      Clears the category label tooltips and sends an AxisChangeEvent to all registered listeners.
      See Also:
    • addCategoryLabelURL

      public void addCategoryLabelURL(Comparable category, String url)
      Adds a URL (to be used in image maps) to the specified category and sends an AxisChangeEvent to all registered listeners.
      Parameters:
      category - the category (null not permitted).
      url - the URL text (null permitted).
      See Also:
    • getCategoryLabelURL

      public String getCategoryLabelURL(Comparable category)
      Returns the URL for the label belonging to the specified category.
      Parameters:
      category - the category (null not permitted).
      Returns:
      The URL text (possibly null).
      See Also:
    • removeCategoryLabelURL

      public void removeCategoryLabelURL(Comparable category)
      Removes the URL for the specified category and, if there was a URL associated with that category, sends an AxisChangeEvent to all registered listeners.
      Parameters:
      category - the category (null not permitted).
      See Also:
    • clearCategoryLabelURLs

      public void clearCategoryLabelURLs()
      Clears the category label URLs and sends an AxisChangeEvent to all registered listeners.
      See Also:
    • getCategoryJava2DCoordinate

      public double getCategoryJava2DCoordinate(CategoryAnchor anchor, int category, int categoryCount, Rectangle2D area, RectangleEdge edge)
      Returns the Java 2D coordinate for a category.
      Parameters:
      anchor - the anchor point.
      category - the category index.
      categoryCount - the category count.
      area - the data area.
      edge - the location of the axis.
      Returns:
      The coordinate.
    • getCategoryStart

      public double getCategoryStart(int category, int categoryCount, Rectangle2D area, RectangleEdge edge)
      Returns the starting coordinate for the specified category.
      Parameters:
      category - the category.
      categoryCount - the number of categories.
      area - the data area.
      edge - the axis location.
      Returns:
      The coordinate.
      See Also:
    • getCategoryMiddle

      public double getCategoryMiddle(int category, int categoryCount, Rectangle2D area, RectangleEdge edge)
      Returns the middle coordinate for the specified category.
      Parameters:
      category - the category.
      categoryCount - the number of categories.
      area - the data area.
      edge - the axis location.
      Returns:
      The coordinate.
      See Also:
    • getCategoryEnd

      public double getCategoryEnd(int category, int categoryCount, Rectangle2D area, RectangleEdge edge)
      Returns the end coordinate for the specified category.
      Parameters:
      category - the category.
      categoryCount - the number of categories.
      area - the data area.
      edge - the axis location.
      Returns:
      The coordinate.
      See Also:
    • getCategoryMiddle

      public double getCategoryMiddle(Comparable category, List categories, Rectangle2D area, RectangleEdge edge)
      A convenience method that returns the axis coordinate for the centre of a category.
      Parameters:
      category - the category key (null not permitted).
      categories - the categories (null not permitted).
      area - the data area (null not permitted).
      edge - the edge along which the axis lies (null not permitted).
      Returns:
      The centre coordinate.
      See Also:
    • getCategorySeriesMiddle

      public double getCategorySeriesMiddle(Comparable category, Comparable seriesKey, CategoryDataset dataset, double itemMargin, Rectangle2D area, RectangleEdge edge)
      Returns the middle coordinate (in Java2D space) for a series within a category.
      Parameters:
      category - the category (null not permitted).
      seriesKey - the series key (null not permitted).
      dataset - the dataset (null not permitted).
      itemMargin - the item margin (0.0 <= itemMargin < 1.0);
      area - the area (null not permitted).
      edge - the edge (null not permitted).
      Returns:
      The coordinate in Java2D space.
    • getCategorySeriesMiddle

      public double getCategorySeriesMiddle(int categoryIndex, int categoryCount, int seriesIndex, int seriesCount, double itemMargin, Rectangle2D area, RectangleEdge edge)
      Returns the middle coordinate (in Java2D space) for a series within a category.
      Parameters:
      categoryIndex - the category index.
      categoryCount - the category count.
      seriesIndex - the series index.
      seriesCount - the series count.
      itemMargin - the item margin (0.0 <= itemMargin < 1.0);
      area - the area (null not permitted).
      edge - the edge (null not permitted).
      Returns:
      The coordinate in Java2D space.
    • calculateCategorySize

      protected double calculateCategorySize(int categoryCount, Rectangle2D area, RectangleEdge edge)
      Calculates the size (width or height, depending on the location of the axis) of a category.
      Parameters:
      categoryCount - the number of categories.
      area - the area within which the categories will be drawn.
      edge - the axis location.
      Returns:
      The category size.
    • calculateCategoryGapSize

      protected double calculateCategoryGapSize(int categoryCount, Rectangle2D area, RectangleEdge edge)
      Calculates the size (width or height, depending on the location of the axis) of a category gap.
      Parameters:
      categoryCount - the number of categories.
      area - the area within which the categories will be drawn.
      edge - the axis location.
      Returns:
      The category gap width.
    • reserveSpace

      public AxisSpace reserveSpace(Graphics2D g2, Plot plot, Rectangle2D plotArea, RectangleEdge edge, AxisSpace space)
      Estimates the space required for the axis, given a specific drawing area.
      Specified by:
      reserveSpace in class Axis
      Parameters:
      g2 - the graphics device (used to obtain font information).
      plot - the plot that the axis belongs to.
      plotArea - the area within which the axis should be drawn.
      edge - the axis location (top or bottom).
      space - the space already reserved.
      Returns:
      The space required to draw the axis.
    • configure

      public void configure()
      Configures the axis against the current plot.
      Specified by:
      configure in class Axis
    • draw

      public AxisState draw(Graphics2D g2, double cursor, Rectangle2D plotArea, Rectangle2D dataArea, 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 axis should be drawn (null not permitted).
      dataArea - the area within which the plot is being 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).
    • drawCategoryLabels

      protected AxisState drawCategoryLabels(Graphics2D g2, Rectangle2D plotArea, Rectangle2D dataArea, RectangleEdge edge, AxisState state, PlotRenderingInfo plotState)
      Draws the category labels and returns the updated axis state.
      Parameters:
      g2 - the graphics device (null not permitted).
      plotArea - the plot area (null not permitted).
      dataArea - the area inside the axes (null not permitted).
      edge - the axis location (null not permitted).
      state - the axis state (null not permitted).
      plotState - collects information about the plot (null permitted).
      Returns:
      The updated axis state (never null).
    • refreshTicks

      public List refreshTicks(Graphics2D g2, AxisState state, Rectangle2D dataArea, RectangleEdge edge)
      Creates a temporary list of ticks that can be used when drawing the axis.
      Specified by:
      refreshTicks in class Axis
      Parameters:
      g2 - the graphics device (used to get font measurements).
      state - the axis state.
      dataArea - the area inside the axes.
      edge - the location of the axis.
      Returns:
      A list of ticks.
    • drawTickMarks

      public void drawTickMarks(Graphics2D g2, double cursor, Rectangle2D dataArea, RectangleEdge edge, AxisState state)
      Draws the tick marks.
      Parameters:
      g2 - the graphics target.
      cursor - the cursor position (an offset when drawing multiple axes)
      dataArea - the area for plotting the data.
      edge - the location of the axis.
      state - the axis state.
    • createLabel

      protected TextBlock createLabel(Comparable category, float width, RectangleEdge edge, Graphics2D g2)
      Creates a label.
      Parameters:
      category - the category.
      width - the available width.
      edge - the edge on which the axis appears.
      g2 - the graphics device.
      Returns:
      A label.
    • calculateTextBlockWidth

      protected double calculateTextBlockWidth(TextBlock block, CategoryLabelPosition position, Graphics2D g2)
      A utility method for determining the width of a text block.
      Parameters:
      block - the text block.
      position - the position.
      g2 - the graphics device.
      Returns:
      The width.
    • calculateTextBlockHeight

      protected double calculateTextBlockHeight(TextBlock block, CategoryLabelPosition position, Graphics2D g2)
      A utility method for determining the height of a text block.
      Parameters:
      block - the text block.
      position - the label position.
      g2 - the graphics device.
      Returns:
      The height.
    • clone

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

      public boolean equals(Object obj)
      Tests this axis for equality with an arbitrary object.
      Overrides:
      equals in class Axis
      Parameters:
      obj - the object (null permitted).
      Returns:
      A boolean.
    • hashCode

      public int hashCode()
      Returns a hash code for this object.
      Overrides:
      hashCode in class Axis
      Returns:
      A hash code.