Class StackedBarRenderer3D
java.lang.Object
org.jfree.chart.renderer.AbstractRenderer
org.jfree.chart.renderer.category.AbstractCategoryItemRenderer
org.jfree.chart.renderer.category.BarRenderer
org.jfree.chart.renderer.category.BarRenderer3D
org.jfree.chart.renderer.category.StackedBarRenderer3D
- All Implemented Interfaces:
Serializable
,Cloneable
,Effect3D
,LegendItemSource
,CategoryItemRenderer
,org.jfree.util.PublicCloneable
public class StackedBarRenderer3D
extends BarRenderer3D
implements Cloneable, org.jfree.util.PublicCloneable, Serializable
Renders stacked bars with 3D-effect, for use with the

CategoryPlot
class. The example shown here is generated by the
StackedBarChart3DDemo1.java
program included in the
JFreeChart Demo Collection:

- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate boolean
A flag that controls whether or not zero values are drawn by the renderer.private boolean
A flag that controls whether the bars display values or percentages.private static final long
For serialization.Fields inherited from class org.jfree.chart.renderer.category.BarRenderer3D
DEFAULT_WALL_PAINT, DEFAULT_X_OFFSET, DEFAULT_Y_OFFSET
Fields inherited from class org.jfree.chart.renderer.category.BarRenderer
BAR_OUTLINE_WIDTH_THRESHOLD, DEFAULT_ITEM_MARGIN
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
ConstructorsConstructorDescriptionCreates a new renderer with no tool tip generator and no URL generator.StackedBarRenderer3D
(boolean renderAsPercentages) Creates a new renderer.StackedBarRenderer3D
(double xOffset, double yOffset) Constructs a new renderer with the specified '3D effect'.StackedBarRenderer3D
(double xOffset, double yOffset, boolean renderAsPercentages) Constructs a new renderer with the specified '3D effect'. -
Method Summary
Modifier and TypeMethodDescriptionprotected void
calculateBarWidth
(CategoryPlot plot, Rectangle2D dataArea, int rendererIndex, CategoryItemRendererState state) Calculates the bar width and stores it in the renderer state.private Shape[]
createHorizontalBlock
(double x0, double width, double y0, double y1, boolean inverted) Creates an array of shapes representing the six sides of a block in a horizontal stack.protected List
createStackedValueList
(CategoryDataset dataset, Comparable category, double base, boolean asPercentages) Deprecated.protected List
createStackedValueList
(CategoryDataset dataset, Comparable category, int[] includedRows, double base, boolean asPercentages) Returns a list containing the stacked values for the specified series in the given dataset, plus the supplied base value.private Shape[]
createVerticalBlock
(double x0, double width, double y0, double y1, boolean inverted) Creates an array of shapes representing the six sides of a block in a vertical stack.void
drawItem
(Graphics2D g2, CategoryItemRendererState state, Rectangle2D dataArea, CategoryPlot plot, CategoryAxis domainAxis, ValueAxis rangeAxis, CategoryDataset dataset, int row, int column, int pass) Draws the visual representation of one data item from the chart (in fact, this method does nothing until it reaches the last item for each category, at which point it draws all the items for that category).protected void
drawStackHorizontal
(List values, Comparable category, Graphics2D g2, CategoryItemRendererState state, Rectangle2D dataArea, CategoryPlot plot, CategoryAxis domainAxis, ValueAxis rangeAxis, CategoryDataset dataset) Draws a stack of bars for one category, with a horizontal orientation.protected void
drawStackVertical
(List values, Comparable category, Graphics2D g2, CategoryItemRendererState state, Rectangle2D dataArea, CategoryPlot plot, CategoryAxis domainAxis, ValueAxis rangeAxis, CategoryDataset dataset) Draws a stack of bars for one category, with a vertical orientation.boolean
Tests this renderer for equality with an arbitrary object.findRangeBounds
(CategoryDataset dataset) Returns the range of values the renderer requires to display all the items from the specified dataset.boolean
Returns the flag that controls whether or not zero values are drawn by the renderer.boolean
Returnstrue
if the renderer displays each item value as a percentage (so that the stacked bars add to 100%), andfalse
otherwise.int
hashCode()
Returns a hash code for this instance.void
setIgnoreZeroValues
(boolean ignore) Sets a flag that controls whether or not zero values are drawn by the renderer, and sends aRendererChangeEvent
to all registered listeners.void
setRenderAsPercentages
(boolean asPercentages) Sets the flag that controls whether the renderer displays each item value as a percentage (so that the stacked bars add to 100%), and sends aRendererChangeEvent
to all registered listeners.Methods inherited from class org.jfree.chart.renderer.category.BarRenderer3D
drawBackground, drawDomainGridline, drawOutline, drawRangeGridline, drawRangeLine, drawRangeMarker, getWallPaint, getXOffset, getYOffset, initialise, setWallPaint
Methods inherited from class org.jfree.chart.renderer.category.BarRenderer
calculateBarL0L1, calculateBarW0, calculateSeriesWidth, drawItemLabel, findRangeBounds, getBarPainter, getBase, getDefaultBarPainter, getDefaultShadowsVisible, getGradientPaintTransformer, getIncludeBaseInRange, getItemMargin, getLegendItem, getLowerClip, getMaximumBarWidth, getMinimumBarLength, getNegativeItemLabelPositionFallback, getPositiveItemLabelPositionFallback, getShadowPaint, getShadowsVisible, getShadowXOffset, getShadowYOffset, getUpperClip, isDrawBarOutline, setBarPainter, setBase, setDefaultBarPainter, setDefaultShadowsVisible, setDrawBarOutline, setGradientPaintTransformer, setIncludeBaseInRange, setItemMargin, setMaximumBarWidth, setMinimumBarLength, setNegativeItemLabelPositionFallback, setPositiveItemLabelPositionFallback, setShadowPaint, setShadowVisible, setShadowXOffset, setShadowYOffset
Methods inherited from class org.jfree.chart.renderer.category.AbstractCategoryItemRenderer
addEntity, addItemEntity, calculateDomainMarkerTextAnchorPoint, calculateRangeMarkerTextAnchorPoint, clone, createState, drawDomainMarker, drawItemLabel, getBaseItemLabelGenerator, getBaseItemURLGenerator, getBaseToolTipGenerator, getColumnCount, getDomainAxis, getDrawingSupplier, getItemLabelGenerator, getItemMiddle, getItemURLGenerator, getLegendItemLabelGenerator, getLegendItems, getLegendItemToolTipGenerator, getLegendItemURLGenerator, getPassCount, getPlot, getRangeAxis, getRowCount, getSeriesItemLabelGenerator, getSeriesItemURLGenerator, getSeriesToolTipGenerator, getToolTipGenerator, getToolTipGenerator, setBaseItemLabelGenerator, setBaseItemURLGenerator, setBaseToolTipGenerator, setItemLabelGenerator, setItemURLGenerator, setLegendItemLabelGenerator, setLegendItemToolTipGenerator, setLegendItemURLGenerator, setPlot, setSeriesItemLabelGenerator, setSeriesItemURLGenerator, setSeriesToolTipGenerator, setToolTipGenerator, updateCrosshairValues
Methods inherited from class org.jfree.chart.renderer.AbstractRenderer
addChangeListener, calculateLabelAnchorPoint, clearSeriesPaints, clearSeriesStrokes, fireChangeEvent, getAutoPopulateSeriesFillPaint, getAutoPopulateSeriesOutlinePaint, getAutoPopulateSeriesOutlineStroke, getAutoPopulateSeriesPaint, getAutoPopulateSeriesShape, getAutoPopulateSeriesStroke, getBaseCreateEntities, getBaseFillPaint, getBaseItemLabelFont, getBaseItemLabelPaint, getBaseItemLabelsVisible, getBaseLegendShape, getBaseLegendTextFont, getBaseLegendTextPaint, getBaseNegativeItemLabelPosition, getBaseOutlinePaint, getBaseOutlineStroke, getBasePaint, getBasePositiveItemLabelPosition, getBaseSeriesVisible, getBaseSeriesVisibleInLegend, getBaseShape, getBaseStroke, getCreateEntities, getDataBoundsIncludesVisibleSeriesOnly, getDefaultEntityRadius, getItemCreateEntity, getItemFillPaint, getItemLabelAnchorOffset, getItemLabelFont, getItemLabelFont, getItemLabelPaint, getItemLabelPaint, getItemOutlinePaint, getItemOutlineStroke, getItemPaint, getItemShape, getItemStroke, getItemVisible, getLegendShape, getLegendTextFont, getLegendTextPaint, getNegativeItemLabelPosition, getNegativeItemLabelPosition, getPositiveItemLabelPosition, getPositiveItemLabelPosition, getSeriesCreateEntities, getSeriesFillPaint, getSeriesItemLabelFont, getSeriesItemLabelPaint, getSeriesNegativeItemLabelPosition, getSeriesOutlinePaint, getSeriesOutlineStroke, getSeriesPaint, getSeriesPositiveItemLabelPosition, getSeriesShape, getSeriesStroke, getSeriesVisible, getSeriesVisible, getSeriesVisibleInLegend, getSeriesVisibleInLegend, getTreatLegendShapeAsLine, hasListener, isItemLabelVisible, isSeriesItemLabelsVisible, isSeriesVisible, isSeriesVisibleInLegend, lookupLegendShape, lookupLegendTextFont, lookupLegendTextPaint, lookupSeriesFillPaint, lookupSeriesOutlinePaint, lookupSeriesOutlineStroke, lookupSeriesPaint, lookupSeriesShape, lookupSeriesStroke, notifyListeners, removeChangeListener, setAutoPopulateSeriesFillPaint, setAutoPopulateSeriesOutlinePaint, setAutoPopulateSeriesOutlineStroke, setAutoPopulateSeriesPaint, setAutoPopulateSeriesShape, setAutoPopulateSeriesStroke, setBaseCreateEntities, setBaseCreateEntities, setBaseFillPaint, setBaseFillPaint, setBaseItemLabelFont, setBaseItemLabelFont, setBaseItemLabelPaint, setBaseItemLabelPaint, setBaseItemLabelsVisible, setBaseItemLabelsVisible, setBaseItemLabelsVisible, setBaseLegendShape, setBaseLegendTextFont, setBaseLegendTextPaint, setBaseNegativeItemLabelPosition, setBaseNegativeItemLabelPosition, setBaseOutlinePaint, setBaseOutlinePaint, setBaseOutlineStroke, setBaseOutlineStroke, setBasePaint, setBasePaint, setBasePositiveItemLabelPosition, setBasePositiveItemLabelPosition, setBaseSeriesVisible, setBaseSeriesVisible, setBaseSeriesVisibleInLegend, setBaseSeriesVisibleInLegend, setBaseShape, setBaseShape, setBaseStroke, setBaseStroke, setCreateEntities, setCreateEntities, setDataBoundsIncludesVisibleSeriesOnly, setDefaultEntityRadius, setFillPaint, setFillPaint, setItemLabelAnchorOffset, setItemLabelFont, setItemLabelFont, setItemLabelPaint, setItemLabelPaint, setItemLabelsVisible, setItemLabelsVisible, setItemLabelsVisible, setLegendShape, setLegendTextFont, setLegendTextPaint, 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, setTreatLegendShapeAsLine
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.jfree.chart.renderer.category.CategoryItemRenderer
addChangeListener, getBaseItemLabelFont, getBaseItemLabelPaint, getBaseItemLabelsVisible, getBaseNegativeItemLabelPosition, getBaseOutlinePaint, getBaseOutlineStroke, getBasePaint, getBasePositiveItemLabelPosition, getBaseSeriesVisible, getBaseSeriesVisibleInLegend, getBaseShape, getBaseStroke, getItemLabelFont, getItemLabelFont, getItemLabelPaint, getItemLabelPaint, getItemOutlinePaint, getItemOutlineStroke, getItemPaint, getItemShape, getItemStroke, getItemVisible, getNegativeItemLabelPosition, getNegativeItemLabelPosition, getPositiveItemLabelPosition, getPositiveItemLabelPosition, getSeriesItemLabelFont, getSeriesItemLabelPaint, getSeriesNegativeItemLabelPosition, getSeriesOutlinePaint, getSeriesOutlineStroke, getSeriesPaint, getSeriesPositiveItemLabelPosition, getSeriesShape, getSeriesStroke, getSeriesVisible, getSeriesVisible, getSeriesVisibleInLegend, getSeriesVisibleInLegend, isItemLabelVisible, isSeriesItemLabelsVisible, isSeriesVisible, isSeriesVisibleInLegend, removeChangeListener, setBaseItemLabelFont, setBaseItemLabelPaint, setBaseItemLabelsVisible, setBaseItemLabelsVisible, setBaseItemLabelsVisible, setBaseNegativeItemLabelPosition, setBaseNegativeItemLabelPosition, setBaseOutlinePaint, setBaseOutlineStroke, setBasePaint, setBasePositiveItemLabelPosition, setBasePositiveItemLabelPosition, setBaseSeriesVisible, setBaseSeriesVisible, setBaseSeriesVisibleInLegend, setBaseSeriesVisibleInLegend, setBaseShape, setBaseStroke, setItemLabelFont, setItemLabelPaint, setItemLabelsVisible, setItemLabelsVisible, setItemLabelsVisible, setNegativeItemLabelPosition, setNegativeItemLabelPosition, setOutlinePaint, setOutlineStroke, setPaint, setPositiveItemLabelPosition, setPositiveItemLabelPosition, setSeriesItemLabelFont, setSeriesItemLabelPaint, setSeriesItemLabelsVisible, setSeriesItemLabelsVisible, setSeriesItemLabelsVisible, setSeriesNegativeItemLabelPosition, setSeriesNegativeItemLabelPosition, setSeriesOutlinePaint, setSeriesOutlineStroke, setSeriesPaint, setSeriesPositiveItemLabelPosition, setSeriesPositiveItemLabelPosition, setSeriesShape, setSeriesStroke, setSeriesVisible, setSeriesVisible, setSeriesVisible, setSeriesVisible, setSeriesVisibleInLegend, setSeriesVisibleInLegend, setSeriesVisibleInLegend, setSeriesVisibleInLegend, setShape, setStroke
Methods inherited from interface org.jfree.util.PublicCloneable
clone
-
Field Details
-
serialVersionUID
private static final long serialVersionUIDFor serialization.- See Also:
-
renderAsPercentages
private boolean renderAsPercentagesA flag that controls whether the bars display values or percentages. -
ignoreZeroValues
private boolean ignoreZeroValuesA flag that controls whether or not zero values are drawn by the renderer.- Since:
- 1.0.14
-
-
Constructor Details
-
StackedBarRenderer3D
public StackedBarRenderer3D()Creates a new renderer with no tool tip generator and no URL generator.The defaults (no tool tip or URL generators) have been chosen to minimise the processing required to generate a default chart. If you require tool tips or URLs, then you can easily add the required generators.
-
StackedBarRenderer3D
public StackedBarRenderer3D(double xOffset, double yOffset) Constructs a new renderer with the specified '3D effect'.- Parameters:
xOffset
- the x-offset for the 3D effect.yOffset
- the y-offset for the 3D effect.
-
StackedBarRenderer3D
public StackedBarRenderer3D(boolean renderAsPercentages) Creates a new renderer.- Parameters:
renderAsPercentages
- a flag that controls whether the data values are rendered as percentages.- Since:
- 1.0.2
-
StackedBarRenderer3D
public StackedBarRenderer3D(double xOffset, double yOffset, boolean renderAsPercentages) Constructs a new renderer with the specified '3D effect'.- Parameters:
xOffset
- the x-offset for the 3D effect.yOffset
- the y-offset for the 3D effect.renderAsPercentages
- a flag that controls whether the data values are rendered as percentages.- Since:
- 1.0.2
-
-
Method Details
-
getRenderAsPercentages
public boolean getRenderAsPercentages()Returnstrue
if the renderer displays each item value as a percentage (so that the stacked bars add to 100%), andfalse
otherwise.- Returns:
- A boolean.
- Since:
- 1.0.2
-
setRenderAsPercentages
public void setRenderAsPercentages(boolean asPercentages) Sets the flag that controls whether the renderer displays each item value as a percentage (so that the stacked bars add to 100%), and sends aRendererChangeEvent
to all registered listeners.- Parameters:
asPercentages
- the flag.- Since:
- 1.0.2
-
getIgnoreZeroValues
public boolean getIgnoreZeroValues()Returns the flag that controls whether or not zero values are drawn by the renderer.- Returns:
- A boolean.
- Since:
- 1.0.14
-
setIgnoreZeroValues
public void setIgnoreZeroValues(boolean ignore) Sets a flag that controls whether or not zero values are drawn by the renderer, and sends aRendererChangeEvent
to all registered listeners.- Parameters:
ignore
- the new flag value.- Since:
- 1.0.14
-
findRangeBounds
Returns the range of values the renderer requires to display all the items from the specified dataset.- Specified by:
findRangeBounds
in interfaceCategoryItemRenderer
- Overrides:
findRangeBounds
in classAbstractCategoryItemRenderer
- Parameters:
dataset
- the dataset (null
not permitted).- Returns:
- The range (or
null
if the dataset is empty).
-
calculateBarWidth
protected void calculateBarWidth(CategoryPlot plot, Rectangle2D dataArea, int rendererIndex, CategoryItemRendererState state) Calculates the bar width and stores it in the renderer state.- Overrides:
calculateBarWidth
in classBarRenderer
- Parameters:
plot
- the plot.dataArea
- the data area.rendererIndex
- the renderer index.state
- the renderer state.
-
createStackedValueList
protected List createStackedValueList(CategoryDataset dataset, Comparable category, double base, boolean asPercentages) Deprecated.As of 1.0.13, usecreateStackedValueList(CategoryDataset, Comparable, int[], double, boolean)
.Returns a list containing the stacked values for the specified series in the given dataset, plus the supplied base value.- Parameters:
dataset
- the dataset (null
not permitted).category
- the category key (null
not permitted).base
- the base value.asPercentages
- a flag that controls whether the values in the list are converted to percentages of the total.- Returns:
- The value list.
- Since:
- 1.0.4
-
createStackedValueList
protected List createStackedValueList(CategoryDataset dataset, Comparable category, int[] includedRows, double base, boolean asPercentages) Returns a list containing the stacked values for the specified series in the given dataset, plus the supplied base value.- Parameters:
dataset
- the dataset (null
not permitted).category
- the category key (null
not permitted).includedRows
- the included rows.base
- the base value.asPercentages
- a flag that controls whether the values in the list are converted to percentages of the total.- Returns:
- The value list.
- Since:
- 1.0.13
-
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 visual representation of one data item from the chart (in fact, this method does nothing until it reaches the last item for each category, at which point it draws all the items for that category).- Specified by:
drawItem
in interfaceCategoryItemRenderer
- Overrides:
drawItem
in classBarRenderer3D
- Parameters:
g2
- the graphics device.state
- the renderer state.dataArea
- the plot area.plot
- the plot.domainAxis
- the domain (category) axis.rangeAxis
- the range (value) axis.dataset
- the data.row
- the row index (zero-based).column
- the column index (zero-based).pass
- the pass index.
-
drawStackHorizontal
protected void drawStackHorizontal(List values, Comparable category, Graphics2D g2, CategoryItemRendererState state, Rectangle2D dataArea, CategoryPlot plot, CategoryAxis domainAxis, ValueAxis rangeAxis, CategoryDataset dataset) Draws a stack of bars for one category, with a horizontal orientation.- Parameters:
values
- the value list.category
- the category.g2
- the graphics device.state
- the state.dataArea
- the data area (adjusted for the 3D effect).plot
- the plot.domainAxis
- the domain axis.rangeAxis
- the range axis.dataset
- the dataset.- Since:
- 1.0.4
-
createHorizontalBlock
private Shape[] createHorizontalBlock(double x0, double width, double y0, double y1, boolean inverted) Creates an array of shapes representing the six sides of a block in a horizontal stack.- Parameters:
x0
- left edge of bar (in Java2D space).width
- the width of the bar (in Java2D units).y0
- the base of the block (in Java2D space).y1
- the top of the block (in Java2D space).inverted
- a flag indicating whether or not the block is inverted (this changes the order of the faces of the block).- Returns:
- The sides of the block.
-
drawStackVertical
protected void drawStackVertical(List values, Comparable category, Graphics2D g2, CategoryItemRendererState state, Rectangle2D dataArea, CategoryPlot plot, CategoryAxis domainAxis, ValueAxis rangeAxis, CategoryDataset dataset) Draws a stack of bars for one category, with a vertical orientation.- Parameters:
values
- the value list.category
- the category.g2
- the graphics device.state
- the state.dataArea
- the data area (adjusted for the 3D effect).plot
- the plot.domainAxis
- the domain axis.rangeAxis
- the range axis.dataset
- the dataset.- Since:
- 1.0.4
-
createVerticalBlock
private Shape[] createVerticalBlock(double x0, double width, double y0, double y1, boolean inverted) Creates an array of shapes representing the six sides of a block in a vertical stack.- Parameters:
x0
- left edge of bar (in Java2D space).width
- the width of the bar (in Java2D units).y0
- the base of the block (in Java2D space).y1
- the top of the block (in Java2D space).inverted
- a flag indicating whether or not the block is inverted (this changes the order of the faces of the block).- Returns:
- The sides of the block.
-
equals
Tests this renderer for equality with an arbitrary object.- Overrides:
equals
in classBarRenderer3D
- Parameters:
obj
- the object (null
permitted).- Returns:
- A boolean.
-
hashCode
public int hashCode()Returns a hash code for this instance.- Overrides:
hashCode
in classAbstractCategoryItemRenderer
- Returns:
- A hash code.
-
createStackedValueList(CategoryDataset, Comparable, int[], double, boolean)
.