org.jfree.chart.renderer.category

Class BarRenderer

Implemented Interfaces:
Cloneable, PublicCloneable, Serializable, CategoryItemRenderer, LegendItemSource, Serializable
Known Direct Subclasses:
BarRenderer3D, IntervalBarRenderer, LayeredBarRenderer, StackedBarRenderer, StatisticalBarRenderer, WaterfallBarRenderer

public class BarRenderer
extends AbstractCategoryItemRenderer
implements Cloneable, PublicCloneable, Serializable

A CategoryItemRenderer that draws individual data items as bars.

Field Summary

static double
BAR_OUTLINE_WIDTH_THRESHOLD
Constant that controls the minimum width before a bar has an outline drawn.
static double
DEFAULT_ITEM_MARGIN
The default item margin percentage.

Fields inherited from class org.jfree.chart.renderer.AbstractRenderer

DEFAULT_OUTLINE_PAINT, DEFAULT_OUTLINE_STROKE, DEFAULT_PAINT, DEFAULT_SHAPE, DEFAULT_STROKE, DEFAULT_VALUE_LABEL_FONT, DEFAULT_VALUE_LABEL_PAINT, ZERO

Constructor Summary

BarRenderer()
Creates a new bar renderer with default settings.

Method Summary

protected double[]
calculateBarL0L1(double value)
Calculates the coordinates for the length of a single bar.
protected double
calculateBarW0(CategoryPlot plot, PlotOrientation orientation, Rectangle2D dataArea, CategoryAxis domainAxis, CategoryItemRendererState state, int row, int column)
Calculates the coordinate of the first "side" of a bar.
protected void
calculateBarWidth(CategoryPlot plot, Rectangle2D dataArea, int rendererIndex, CategoryItemRendererState state)
Calculates the bar width and stores it in the renderer state.
protected double
calculateSeriesWidth(double space, CategoryAxis axis, int categories, int series)
Calculates the available space for each series.
void
drawItem(Graphics2D g2, CategoryItemRendererState state, Rectangle2D dataArea, CategoryPlot plot, CategoryAxis domainAxis, ValueAxis rangeAxis, CategoryDataset dataset, int row, int column, int pass)
Draws the bar for a single (series, category) data item.
protected void
drawItemLabel(Graphics2D g2, CategoryDataset data, int row, int column, CategoryPlot plot, CategoryItemLabelGenerator generator, Rectangle2D bar, boolean negative)
Draws an item label.
boolean
equals(Object obj)
Tests this instance for equality with an arbitrary object.
Range
findRangeBounds(CategoryDataset dataset)
Returns the range of values the renderer requires to display all the items from the specified dataset.
double
getBase()
Returns the base value for the bars.
GradientPaintTransformer
getGradientPaintTransformer()
Returns the gradient paint transformer (an object used to transform gradient paint objects to fit each bar.
boolean
getIncludeBaseInRange()
Returns the flag that controls whether or not the base value for the bars is included in the range calculated by findRangeBounds(CategoryDataset).
double
getItemMargin()
Returns the item margin as a percentage of the available space for all bars.
LegendItem
getLegendItem(int datasetIndex, int series)
Returns a legend item for a series.
double
getLowerClip()
Returns the lower clip value.
double
getMaximumBarWidth()
Returns the maximum bar width, as a percentage of the available drawing space.
double
getMinimumBarLength()
Returns the minimum bar length (in Java2D units).
ItemLabelPosition
getNegativeItemLabelPositionFallback()
Returns the fallback position for negative item labels that don't fit within a bar.
ItemLabelPosition
getPositiveItemLabelPositionFallback()
Returns the fallback position for positive item labels that don't fit within a bar.
double
getUpperClip()
Returns the upper clip value.
CategoryItemRendererState
initialise(Graphics2D g2, Rectangle2D dataArea, CategoryPlot plot, int rendererIndex, PlotRenderingInfo info)
Initialises the renderer and returns a state object that will be passed to subsequent calls to the drawItem method.
boolean
isDrawBarOutline()
Returns a flag that controls whether or not bar outlines are drawn.
void
setBase(double base)
Sets the base value for the bars and sends a RendererChangeEvent to all registered listeners.
void
setDrawBarOutline(boolean draw)
Sets the flag that controls whether or not bar outlines are drawn and sends a RendererChangeEvent to all registered listeners.
void
setGradientPaintTransformer(GradientPaintTransformer transformer)
Sets the gradient paint transformer and sends a RendererChangeEvent to all registered listeners.
void
setIncludeBaseInRange(boolean include)
Sets the flag that controls whether or not the base value for the bars is included in the range calculated by findRangeBounds(CategoryDataset).
void
setItemMargin(double percent)
Sets the item margin and sends a RendererChangeEvent to all registered listeners.
void
setMaximumBarWidth(double percent)
Sets the maximum bar width, which is specified as a percentage of the available space for all bars, and sends a RendererChangeEvent to all registered listeners.
void
setMinimumBarLength(double min)
Sets the minimum bar length and sends a RendererChangeEvent to all registered listeners.
void
setNegativeItemLabelPositionFallback(ItemLabelPosition position)
Sets the fallback position for negative item labels that don't fit within a bar, and sends a RendererChangeEvent to all registered listeners.
void
setPositiveItemLabelPositionFallback(ItemLabelPosition position)
Sets the fallback position for positive item labels that don't fit within a bar, and sends a RendererChangeEvent to all registered listeners.

Methods inherited from class org.jfree.chart.renderer.category.AbstractCategoryItemRenderer

addItemEntity, calculateDomainMarkerTextAnchorPoint, calculateRangeMarkerTextAnchorPoint, clone, createState, drawBackground, drawDomainGridline, drawDomainMarker, drawItemLabel, drawOutline, drawRangeGridline, drawRangeMarker, equals, findRangeBounds, getBaseItemLabelGenerator, getBaseItemURLGenerator, getBaseToolTipGenerator, getColumnCount, getDomainAxis, getDrawingSupplier, getItemLabelGenerator, getItemURLGenerator, getLegendItem, getLegendItemLabelGenerator, getLegendItemToolTipGenerator, getLegendItemURLGenerator, getLegendItems, getPassCount, getPlot, getRangeAxis, getRowCount, getSeriesItemLabelGenerator, getSeriesItemURLGenerator, getSeriesToolTipGenerator, getToolTipGenerator, getToolTipGenerator, hashCode, initialise, setBaseItemLabelGenerator, setBaseItemURLGenerator, setBaseToolTipGenerator, setItemLabelGenerator, setItemURLGenerator, setLegendItemLabelGenerator, setLegendItemToolTipGenerator, setLegendItemURLGenerator, setPlot, setSeriesItemLabelGenerator, setSeriesItemURLGenerator, setSeriesToolTipGenerator, setToolTipGenerator

Methods inherited from class org.jfree.chart.renderer.AbstractRenderer

addChangeListener, calculateLabelAnchorPoint, clone, equals, fireChangeEvent, getBaseCreateEntities, getBaseFillPaint, getBaseItemLabelFont, getBaseItemLabelPaint, getBaseItemLabelsVisible, getBaseNegativeItemLabelPosition, getBaseOutlinePaint, getBaseOutlineStroke, getBasePaint, getBasePositiveItemLabelPosition, getBaseSeriesVisible, getBaseSeriesVisibleInLegend, getBaseShape, getBaseStroke, getCreateEntities, getDrawingSupplier, getItemCreateEntity, getItemFillPaint, getItemLabelAnchorOffset, getItemLabelFont, getItemLabelFont, getItemLabelPaint, getItemLabelPaint, getItemOutlinePaint, getItemOutlineStroke, getItemPaint, getItemShape, getItemStroke, getItemVisible, getNegativeItemLabelPosition, getNegativeItemLabelPosition, getPositiveItemLabelPosition, getPositiveItemLabelPosition, getSeriesCreateEntities, getSeriesFillPaint, getSeriesItemLabelFont, getSeriesItemLabelPaint, getSeriesNegativeItemLabelPosition, getSeriesOutlinePaint, getSeriesOutlineStroke, getSeriesPaint, getSeriesPositiveItemLabelPosition, getSeriesShape, getSeriesStroke, getSeriesVisible, getSeriesVisible, getSeriesVisibleInLegend, getSeriesVisibleInLegend, hasListener, hashCode, isItemLabelVisible, isSeriesItemLabelsVisible, isSeriesVisible, isSeriesVisibleInLegend, notifyListeners, removeChangeListener, setBaseCreateEntities, setBaseCreateEntities, setBaseFillPaint, setBaseFillPaint, setBaseItemLabelFont, setBaseItemLabelFont, setBaseItemLabelPaint, setBaseItemLabelPaint, setBaseItemLabelsVisible, setBaseItemLabelsVisible, setBaseItemLabelsVisible, setBaseNegativeItemLabelPosition, setBaseNegativeItemLabelPosition, setBaseOutlinePaint, setBaseOutlinePaint, setBaseOutlineStroke, setBaseOutlineStroke, setBasePaint, setBasePaint, setBasePositiveItemLabelPosition, setBasePositiveItemLabelPosition, setBaseSeriesVisible, setBaseSeriesVisible, setBaseSeriesVisibleInLegend, setBaseSeriesVisibleInLegend, setBaseShape, setBaseShape, setBaseStroke, setBaseStroke, setCreateEntities, setCreateEntities, setFillPaint, setFillPaint, setItemLabelAnchorOffset, setItemLabelFont, setItemLabelFont, setItemLabelPaint, setItemLabelPaint, setItemLabelsVisible, setItemLabelsVisible, setItemLabelsVisible, setNegativeItemLabelPosition, setNegativeItemLabelPosition, setOutlinePaint, setOutlinePaint, setOutlineStroke, setOutlineStroke, setPaint, setPaint, setPositiveItemLabelPosition, setPositiveItemLabelPosition, setSeriesCreateEntities, setSeriesCreateEntities, setSeriesFillPaint, setSeriesFillPaint, setSeriesItemLabelFont, setSeriesItemLabelFont, setSeriesItemLabelPaint, setSeriesItemLabelPaint, setSeriesItemLabelsVisible, setSeriesItemLabelsVisible, setSeriesItemLabelsVisible, setSeriesNegativeItemLabelPosition, setSeriesNegativeItemLabelPosition, setSeriesOutlinePaint, setSeriesOutlinePaint, setSeriesOutlineStroke, setSeriesOutlineStroke, setSeriesPaint, setSeriesPaint, setSeriesPositiveItemLabelPosition, setSeriesPositiveItemLabelPosition, setSeriesShape, setSeriesShape, setSeriesStroke, setSeriesStroke, setSeriesVisible, setSeriesVisible, setSeriesVisible, setSeriesVisible, setSeriesVisibleInLegend, setSeriesVisibleInLegend, setSeriesVisibleInLegend, setSeriesVisibleInLegend, setShape, setShape, setStroke, setStroke

Field Details

BAR_OUTLINE_WIDTH_THRESHOLD

public static final double BAR_OUTLINE_WIDTH_THRESHOLD
Constant that controls the minimum width before a bar has an outline drawn.
Field Value:
3.0

DEFAULT_ITEM_MARGIN

public static final double DEFAULT_ITEM_MARGIN
The default item margin percentage.
Field Value:
0.0

Constructor Details

BarRenderer

public BarRenderer()
Creates a new bar renderer with default settings.

Method Details

calculateBarL0L1

protected double[] calculateBarL0L1(double value)
Calculates the coordinates for the length of a single bar.
Parameters:
value - the value represented by the bar.
Returns:
The coordinates for each end of the bar (or null if the bar is not visible for the current axis range).

calculateBarW0

protected double calculateBarW0(CategoryPlot plot,
                                PlotOrientation orientation,
                                Rectangle2D dataArea,
                                CategoryAxis domainAxis,
                                CategoryItemRendererState state,
                                int row,
                                int column)
Calculates the coordinate of the first "side" of a bar. This will be the minimum x-coordinate for a vertical bar, and the minimum y-coordinate for a horizontal bar.
Parameters:
plot - the plot.
orientation - the plot orientation.
dataArea - the data area.
domainAxis - the domain axis.
state - the renderer state (has the bar width precalculated).
row - the row index.
column - the column index.
Returns:
The coordinate.

calculateBarWidth

protected void calculateBarWidth(CategoryPlot plot,
                                 Rectangle2D dataArea,
                                 int rendererIndex,
                                 CategoryItemRendererState state)
Calculates the bar width and stores it in the renderer state.
Parameters:
plot - the plot.
dataArea - the data area.
rendererIndex - the renderer index.
state - the renderer state.

calculateSeriesWidth

protected double calculateSeriesWidth(double space,
                                      CategoryAxis axis,
                                      int categories,
                                      int series)
Calculates the available space for each series.
Parameters:
space - the space along the entire axis (in Java2D units).
axis - the category axis.
categories - the number of categories.
series - the number of series.
Returns:
The width of one series.

drawItem

public void drawItem(Graphics2D g2,
                     CategoryItemRendererState state,
                     Rectangle2D dataArea,
                     CategoryPlot plot,
                     CategoryAxis domainAxis,
                     ValueAxis rangeAxis,
                     CategoryDataset dataset,
                     int row,
                     int column,
                     int pass)
Draws the bar for a single (series, category) data item.
Specified by:
drawItem in interface CategoryItemRenderer
Parameters:
g2 - the graphics device.
state - the renderer state.
dataArea - the data area.
plot - the plot.
domainAxis - the domain axis.
rangeAxis - the range axis.
dataset - the dataset.
row - the row index (zero-based).
column - the column index (zero-based).
pass - the pass index.

drawItemLabel

protected void drawItemLabel(Graphics2D g2,
                             CategoryDataset data,
                             int row,
                             int column,
                             CategoryPlot plot,
                             CategoryItemLabelGenerator generator,
                             Rectangle2D bar,
                             boolean negative)
Draws an item label. This method is overridden so that the bar can be used to calculate the label anchor point.
Parameters:
g2 - the graphics device.
data - the dataset.
row - the row.
column - the column.
plot - the plot.
generator - the label generator.
bar - the bar.
negative - a flag indicating a negative value.

equals

public boolean equals(Object obj)
Tests this instance for equality with an arbitrary object.
Overrides:
equals in interface AbstractCategoryItemRenderer
Parameters:
obj - the object (null permitted).
Returns:
A boolean.

findRangeBounds

public Range findRangeBounds(CategoryDataset dataset)
Returns the range of values the renderer requires to display all the items from the specified dataset. This takes into account the range of values in the dataset, plus the flag that determines whether or not the base value for the bars should be included in the range.
Specified by:
findRangeBounds in interface CategoryItemRenderer
Overrides:
findRangeBounds in interface AbstractCategoryItemRenderer
Parameters:
dataset - the dataset (null permitted).
Returns:
The range (or null if the dataset is null or empty).

getBase

public double getBase()
Returns the base value for the bars. The default value is 0.0.
Returns:
The base value for the bars.

getGradientPaintTransformer

public GradientPaintTransformer getGradientPaintTransformer()
Returns the gradient paint transformer (an object used to transform gradient paint objects to fit each bar.
Returns:
A transformer (null possible).

getIncludeBaseInRange

public boolean getIncludeBaseInRange()
Returns the flag that controls whether or not the base value for the bars is included in the range calculated by findRangeBounds(CategoryDataset).
Returns:
true if the base is included in the range, and false otherwise.
Since:
1.0.1

getItemMargin

public double getItemMargin()
Returns the item margin as a percentage of the available space for all bars.
Returns:
The margin percentage (where 0.10 is ten percent).

getLegendItem

public LegendItem getLegendItem(int datasetIndex,
                                int series)
Returns a legend item for a series.
Specified by:
getLegendItem in interface CategoryItemRenderer
Overrides:
getLegendItem in interface AbstractCategoryItemRenderer
Parameters:
datasetIndex - the dataset index (zero-based).
series - the series index (zero-based).
Returns:
The legend item.

getLowerClip

public double getLowerClip()
Returns the lower clip value. This value is recalculated in the initialise() method.
Returns:
The value.

getMaximumBarWidth

public double getMaximumBarWidth()
Returns the maximum bar width, as a percentage of the available drawing space.
Returns:
The maximum bar width.

getMinimumBarLength

public double getMinimumBarLength()
Returns the minimum bar length (in Java2D units).
Returns:
The minimum bar length.

getNegativeItemLabelPositionFallback

public ItemLabelPosition getNegativeItemLabelPositionFallback()
Returns the fallback position for negative item labels that don't fit within a bar.
Returns:
The fallback position (null possible).

getPositiveItemLabelPositionFallback

public ItemLabelPosition getPositiveItemLabelPositionFallback()
Returns the fallback position for positive item labels that don't fit within a bar.
Returns:
The fallback position (null possible).

getUpperClip

public double getUpperClip()
Returns the upper clip value. This value is recalculated in the initialise() method.
Returns:
The value.

initialise

public CategoryItemRendererState initialise(Graphics2D g2,
                                            Rectangle2D dataArea,
                                            CategoryPlot plot,
                                            int rendererIndex,
                                            PlotRenderingInfo info)
Initialises the renderer and returns a state object that will be passed to subsequent calls to the drawItem method. This method gets called once at the start of the process of drawing a chart.
Specified by:
initialise in interface CategoryItemRenderer
Overrides:
initialise in interface AbstractCategoryItemRenderer
Parameters:
g2 - the graphics device.
dataArea - the area in which the data is to be plotted.
plot - the plot.
rendererIndex - the renderer index.
info - collects chart rendering information for return to caller.
Returns:
The renderer state.

isDrawBarOutline

public boolean isDrawBarOutline()
Returns a flag that controls whether or not bar outlines are drawn.
Returns:
A boolean.

setBase

public void setBase(double base)
Sets the base value for the bars and sends a RendererChangeEvent to all registered listeners.
Parameters:
base - the new base value.
See Also:
getBase()

setDrawBarOutline

public void setDrawBarOutline(boolean draw)
Sets the flag that controls whether or not bar outlines are drawn and sends a RendererChangeEvent to all registered listeners.
Parameters:
draw - the flag.

setGradientPaintTransformer

public void setGradientPaintTransformer(GradientPaintTransformer transformer)
Sets the gradient paint transformer and sends a RendererChangeEvent to all registered listeners.
Parameters:
transformer - the transformer (null permitted).

setIncludeBaseInRange

public void setIncludeBaseInRange(boolean include)
Sets the flag that controls whether or not the base value for the bars is included in the range calculated by findRangeBounds(CategoryDataset). If the flag is changed, a RendererChangeEvent is sent to all registered listeners.
Parameters:
include - the new value for the flag.
Since:
1.0.1

setItemMargin

public void setItemMargin(double percent)
Sets the item margin and sends a RendererChangeEvent to all registered listeners. The value is expressed as a percentage of the available width for plotting all the bars, with the resulting amount to be distributed between all the bars evenly.
Parameters:
percent - the margin (where 0.10 is ten percent).

setMaximumBarWidth

public void setMaximumBarWidth(double percent)
Sets the maximum bar width, which is specified as a percentage of the available space for all bars, and sends a RendererChangeEvent to all registered listeners.
Parameters:
percent - the percent (where 0.05 is five percent).

setMinimumBarLength

public void setMinimumBarLength(double min)
Sets the minimum bar length and sends a RendererChangeEvent to all registered listeners. The minimum bar length is specified in Java2D units, and can be used to prevent bars that represent very small data values from disappearing when drawn on the screen.
Parameters:
min - the minimum bar length (in Java2D units).

setNegativeItemLabelPositionFallback

public void setNegativeItemLabelPositionFallback(ItemLabelPosition position)
Sets the fallback position for negative item labels that don't fit within a bar, and sends a RendererChangeEvent to all registered listeners.
Parameters:
position - the position (null permitted).

setPositiveItemLabelPositionFallback

public void setPositiveItemLabelPositionFallback(ItemLabelPosition position)
Sets the fallback position for positive item labels that don't fit within a bar, and sends a RendererChangeEvent to all registered listeners.
Parameters:
position - the position (null permitted).