Package org.jfree.chart.axis
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
An axis that displays categories.
- See Also:
-
Field Summary
Modifier and TypeFieldDescriptionstatic final double
The default margin for the axis (used for both lower and upper margins).static final double
The default margin between categories (a percentage of the overall axis length).Fields inherited from class org.jfree.chart.axis.Axis
DEFAULT_AXIS_LABEL_FONT, DEFAULT_AXIS_LABEL_INSETS, DEFAULT_AXIS_LABEL_PAINT, DEFAULT_AXIS_LINE_PAINT, DEFAULT_AXIS_LINE_STROKE, DEFAULT_AXIS_VISIBLE, DEFAULT_TICK_LABEL_FONT, DEFAULT_TICK_LABEL_INSETS, DEFAULT_TICK_LABEL_PAINT, DEFAULT_TICK_LABELS_VISIBLE, DEFAULT_TICK_MARK_INSIDE_LENGTH, DEFAULT_TICK_MARK_OUTSIDE_LENGTH, DEFAULT_TICK_MARK_PAINT, DEFAULT_TICK_MARK_STROKE, DEFAULT_TICK_MARKS_VISIBLE
-
Constructor Summary
ConstructorDescriptionCreates a new category axis with no label.CategoryAxis
(String label) Constructs a category axis, using default values where necessary. -
Method Summary
Modifier and TypeMethodDescriptionvoid
addCategoryLabelToolTip
(Comparable category, String tooltip) Adds a tooltip to the specified category and sends anAxisChangeEvent
to all registered listeners.void
addCategoryLabelURL
(Comparable category, String url) Adds a URL (to be used in image maps) to the specified category and sends anAxisChangeEvent
to all registered listeners.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.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.protected double
calculateTextBlockHeight
(TextBlock block, CategoryLabelPosition position, Graphics2D g2) A utility method for determining the height of a text block.protected double
calculateTextBlockWidth
(TextBlock block, CategoryLabelPosition position, Graphics2D g2) A utility method for determining the width of a text block.void
Clears the category label tooltips and sends anAxisChangeEvent
to all registered listeners.void
Clears the category label URLs and sends anAxisChangeEvent
to all registered listeners.clone()
Creates a clone of the axis.void
Configures the axis against the current plot.protected TextBlock
createLabel
(Comparable category, float width, RectangleEdge edge, Graphics2D g2) Creates a label.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).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.void
drawTickMarks
(Graphics2D g2, double cursor, Rectangle2D dataArea, RectangleEdge edge, AxisState state) Draws the tick marks.boolean
Tests this axis for equality with an arbitrary object.double
getCategoryEnd
(int category, int categoryCount, Rectangle2D area, RectangleEdge edge) Returns the end coordinate for the specified category.double
getCategoryJava2DCoordinate
(CategoryAnchor anchor, int category, int categoryCount, Rectangle2D area, RectangleEdge edge) Returns the Java 2D coordinate for a category.int
Returns the offset between the axis and the category labels (before label positioning is taken into account).Returns the category label position specification (this contains label positioning info for all four possible axis locations).getCategoryLabelToolTip
(Comparable category) Returns the tool tip text for the label belonging to the specified category.getCategoryLabelURL
(Comparable category) Returns the URL for the label belonging to the specified category.double
Returns the category margin.double
getCategoryMiddle
(int category, int categoryCount, Rectangle2D area, RectangleEdge edge) Returns the middle coordinate for the specified category.double
getCategoryMiddle
(Comparable category, List categories, Rectangle2D area, RectangleEdge edge) A convenience method that returns the axis coordinate for the centre of a category.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.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.double
getCategoryStart
(int category, int categoryCount, Rectangle2D area, RectangleEdge edge) Returns the starting coordinate for the specified category.double
Returns the lower margin for the axis.int
Returns the maximum number of lines to use for each category label.float
Returns the category label width ratio.getTickLabelFont
(Comparable category) Returns the font for the tick label for the given category.getTickLabelPaint
(Comparable category) Returns the paint for the tick label for the given category.double
Returns the upper margin for the axis.int
hashCode()
Returns a hash code for this object.refreshTicks
(Graphics2D g2, AxisState state, Rectangle2D dataArea, RectangleEdge edge) Creates a temporary list of ticks that can be used when drawing the axis.void
removeCategoryLabelToolTip
(Comparable category) Removes the tooltip for the specified category and, if there was a value associated with that category, sends anAxisChangeEvent
to all registered listeners.void
removeCategoryLabelURL
(Comparable category) Removes the URL for the specified category and, if there was a URL associated with that category, sends anAxisChangeEvent
to all registered listeners.reserveSpace
(Graphics2D g2, Plot plot, Rectangle2D plotArea, RectangleEdge edge, AxisSpace space) Estimates the space required for the axis, given a specific drawing area.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.void
setCategoryLabelPositions
(CategoryLabelPositions positions) Sets the category label position specification for the axis and sends anAxisChangeEvent
to all registered listeners.void
setCategoryMargin
(double margin) Sets the category margin and sends anAxisChangeEvent
to all registered listeners.void
setLowerMargin
(double margin) Sets the lower margin for the axis and sends anAxisChangeEvent
to all registered listeners.void
setMaximumCategoryLabelLines
(int lines) Sets the maximum number of lines to use for each category label and sends anAxisChangeEvent
to all registered listeners.void
setMaximumCategoryLabelWidthRatio
(float ratio) Sets the maximum category label width ratio and sends anAxisChangeEvent
to all registered listeners.void
setTickLabelFont
(Comparable category, Font font) Sets the font for the tick label for the specified category and sends anAxisChangeEvent
to all registered listeners.void
setTickLabelPaint
(Comparable category, Paint paint) Sets the paint for the tick label for the specified category and sends anAxisChangeEvent
to all registered listeners.void
setUpperMargin
(double margin) Sets the upper margin for the axis and sends anAxisChangeEvent
to all registered listeners.Methods inherited from class org.jfree.chart.axis.Axis
addChangeListener, createAndAddEntity, createAttributedLabel, drawAttributedLabel, drawAxisLine, drawLabel, fireChangeEvent, getAttributedLabel, getAxisLinePaint, getAxisLineStroke, getFixedDimension, getLabel, getLabelAngle, getLabelEnclosure, getLabelFont, getLabelInsets, getLabelLocation, getLabelPaint, getMinorTickMarkInsideLength, getMinorTickMarkOutsideLength, getPlot, getTickLabelFont, getTickLabelInsets, getTickLabelPaint, getTickMarkInsideLength, getTickMarkOutsideLength, getTickMarkPaint, getTickMarkStroke, hasListener, isAxisLineVisible, isMinorTickMarksVisible, isTickLabelsVisible, isTickMarksVisible, isVisible, labelAnchorH, labelAnchorV, labelLocationX, labelLocationY, notifyListeners, removeChangeListener, setAttributedLabel, setAttributedLabel, setAxisLinePaint, setAxisLineStroke, setAxisLineVisible, setFixedDimension, setLabel, setLabelAngle, setLabelFont, setLabelInsets, setLabelInsets, setLabelLocation, setLabelPaint, setMinorTickMarkInsideLength, setMinorTickMarkOutsideLength, setMinorTickMarksVisible, setPlot, setTickLabelFont, setTickLabelInsets, setTickLabelPaint, setTickLabelsVisible, setTickMarkInsideLength, setTickMarkOutsideLength, setTickMarkPaint, setTickMarkStroke, setTickMarksVisible, setVisible
-
Field Details
-
DEFAULT_AXIS_MARGIN
The default margin for the axis (used for both lower and upper margins).- See Also:
-
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
Constructs a category axis, using default values where necessary.- Parameters:
label
- the axis label (null
permitted).
-
-
Method Details
-
getLowerMargin
Returns the lower margin for the axis.- Returns:
- The margin.
- See Also:
-
setLowerMargin
Sets the lower margin for the axis and sends anAxisChangeEvent
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
Returns the upper margin for the axis.- Returns:
- The margin.
- See Also:
-
setUpperMargin
Sets the upper margin for the axis and sends anAxisChangeEvent
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
Returns the category margin.- Returns:
- The margin.
- See Also:
-
setCategoryMargin
Sets the category margin and sends anAxisChangeEvent
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
Returns the maximum number of lines to use for each category label.- Returns:
- The maximum number of lines.
- See Also:
-
setMaximumCategoryLabelLines
Sets the maximum number of lines to use for each category label and sends anAxisChangeEvent
to all registered listeners.- Parameters:
lines
- the maximum number of lines.- See Also:
-
getMaximumCategoryLabelWidthRatio
Returns the category label width ratio.- Returns:
- The ratio.
- See Also:
-
setMaximumCategoryLabelWidthRatio
Sets the maximum category label width ratio and sends anAxisChangeEvent
to all registered listeners.- Parameters:
ratio
- the ratio.- See Also:
-
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
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
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
Sets the category label position specification for the axis and sends anAxisChangeEvent
to all registered listeners.- Parameters:
positions
- the positions (null
not permitted).- See Also:
-
getTickLabelFont
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
Sets the font for the tick label for the specified category and sends anAxisChangeEvent
to all registered listeners.- Parameters:
category
- the category (null
not permitted).font
- the font (null
permitted).- See Also:
-
getTickLabelPaint
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
Sets the paint for the tick label for the specified category and sends anAxisChangeEvent
to all registered listeners.- Parameters:
category
- the category (null
not permitted).paint
- the paint (null
permitted).- See Also:
-
addCategoryLabelToolTip
Adds a tooltip to the specified category and sends anAxisChangeEvent
to all registered listeners.- Parameters:
category
- the category (null
not permitted).tooltip
- the tooltip text (null
permitted).- See Also:
-
getCategoryLabelToolTip
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
Removes the tooltip for the specified category and, if there was a value associated with that category, sends anAxisChangeEvent
to all registered listeners.- Parameters:
category
- the category (null
not permitted).- See Also:
-
clearCategoryLabelToolTips
Clears the category label tooltips and sends anAxisChangeEvent
to all registered listeners. -
addCategoryLabelURL
Adds a URL (to be used in image maps) to the specified category and sends anAxisChangeEvent
to all registered listeners.- Parameters:
category
- the category (null
not permitted).url
- the URL text (null
permitted).- See Also:
-
getCategoryLabelURL
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
Removes the URL for the specified category and, if there was a URL associated with that category, sends anAxisChangeEvent
to all registered listeners.- Parameters:
category
- the category (null
not permitted).- See Also:
-
clearCategoryLabelURLs
Clears the category label URLs and sends anAxisChangeEvent
to all registered listeners. -
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
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
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
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 classAxis
- 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
Configures the axis against the current plot. -
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 classAxis
- 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
Creates a temporary list of ticks that can be used when drawing the axis.- Specified by:
refreshTicks
in classAxis
- 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
Creates a clone of the axis.- Overrides:
clone
in classAxis
- Returns:
- A clone.
- Throws:
CloneNotSupportedException
- if some component of the axis does not support cloning.
-
equals
Tests this axis for equality with an arbitrary object. -
hashCode
Returns a hash code for this object.
-