Class XYBarRenderer

All Implemented Interfaces:
Serializable, Cloneable, EventListener, AnnotationChangeListener, LegendItemSource, XYItemRenderer, PublicCloneable
Direct Known Subclasses:
ClusteredXYBarRenderer, StackedXYBarRenderer

public class XYBarRenderer extends AbstractXYItemRenderer implements XYItemRenderer, Cloneable, PublicCloneable, Serializable
A renderer that draws bars on an XYPlot (requires an IntervalXYDataset). The example shown here is generated by the XYBarChartDemo1.java program included in the JFreeChart demo collection:

XYBarRendererSample.png
See Also:
  • Field Details

    • serialVersionUID

      private static final long serialVersionUID
      For serialization.
      See Also:
    • defaultBarPainter

      private static XYBarPainter defaultBarPainter
      The default bar painter assigned to each new instance of this renderer.
    • defaultShadowsVisible

      private static boolean defaultShadowsVisible
      The default value for the initialisation of the shadowsVisible flag.
    • base

      private double base
      The default base value for the bars.
    • useYInterval

      private boolean useYInterval
      A flag that controls whether the bars use the y-interval supplied by the dataset.
    • margin

      private double margin
      Percentage margin (to reduce the width of bars).
    • drawBarOutline

      private boolean drawBarOutline
      A flag that controls whether or not bar outlines are drawn.
    • gradientPaintTransformer

      private GradientPaintTransformer gradientPaintTransformer
      An optional class used to transform gradient paint objects to fit each bar.
    • legendBar

      private transient Shape legendBar
      The shape used to represent a bar in each legend item (this should never be null).
    • positiveItemLabelPositionFallback

      private ItemLabelPosition positiveItemLabelPositionFallback
      The fallback position if a positive item label doesn't fit inside the bar.
    • negativeItemLabelPositionFallback

      private ItemLabelPosition negativeItemLabelPositionFallback
      The fallback position if a negative item label doesn't fit inside the bar.
    • barPainter

      private XYBarPainter barPainter
      The bar painter (never null).
    • shadowsVisible

      private boolean shadowsVisible
      The flag that controls whether or not shadows are drawn for the bars.
    • shadowXOffset

      private double shadowXOffset
      The x-offset for the shadow effect.
    • shadowYOffset

      private double shadowYOffset
      The y-offset for the shadow effect.
    • barAlignmentFactor

      private double barAlignmentFactor
      A factor used to align the bars about the x-value.
    • minimumLabelSize

      private Dimension minimumLabelSize
      The minimum size for the bar to draw a label
    • showLabelInsideVisibleBar

      private boolean showLabelInsideVisibleBar
      true if the label should be aligned to the visible part of the bar.
  • Constructor Details

    • XYBarRenderer

      public XYBarRenderer()
      The default constructor.
    • XYBarRenderer

      public XYBarRenderer(double margin)
      Constructs a new renderer.
      Parameters:
      margin - the percentage amount to trim from the width of each bar.
  • Method Details

    • getDefaultBarPainter

      public static XYBarPainter getDefaultBarPainter()
      Returns the default bar painter.
      Returns:
      The default bar painter.
    • setDefaultBarPainter

      public static void setDefaultBarPainter(XYBarPainter painter)
      Sets the default bar painter.
      Parameters:
      painter - the painter (null not permitted).
    • getDefaultShadowsVisible

      public static boolean getDefaultShadowsVisible()
      Returns the default value for the shadowsVisible flag.
      Returns:
      A boolean.
      See Also:
    • setDefaultShadowsVisible

      public static void setDefaultShadowsVisible(boolean visible)
      Sets the default value for the shadows visible flag.
      Parameters:
      visible - the new value for the default.
      See Also:
    • getBase

      public double getBase()
      Returns the base value for the bars.
      Returns:
      The base value for the bars.
      See Also:
    • setBase

      public void setBase(double base)
      Sets the base value for the bars and sends a RendererChangeEvent to all registered listeners. The base value is not used if the dataset's y-interval is being used to determine the bar length.
      Parameters:
      base - the new base value.
      See Also:
    • getUseYInterval

      public boolean getUseYInterval()
      Returns a flag that determines whether the y-interval from the dataset is used to calculate the length of each bar.
      Returns:
      A boolean.
      See Also:
    • setUseYInterval

      public void setUseYInterval(boolean use)
      Sets the flag that determines whether the y-interval from the dataset is used to calculate the length of each bar, and sends a RendererChangeEvent to all registered listeners.
      Parameters:
      use - the flag.
      See Also:
    • getMargin

      public double getMargin()
      Returns the margin which is a percentage amount by which the bars are trimmed.
      Returns:
      The margin.
      See Also:
    • setMargin

      public void setMargin(double margin)
      Sets the percentage amount by which the bars are trimmed and sends a RendererChangeEvent to all registered listeners.
      Parameters:
      margin - the new margin.
      See Also:
    • isDrawBarOutline

      public boolean isDrawBarOutline()
      Returns a flag that controls whether or not bar outlines are drawn.
      Returns:
      A boolean.
      See Also:
    • 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.
      See Also:
    • 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).
      See Also:
    • 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).
      See Also:
    • getLegendBar

      public Shape getLegendBar()
      Returns the shape used to represent bars in each legend item.
      Returns:
      The shape used to represent bars in each legend item (never null).
      See Also:
    • setLegendBar

      public void setLegendBar(Shape bar)
      Sets the shape used to represent bars in each legend item and sends a RendererChangeEvent to all registered listeners.
      Parameters:
      bar - the bar shape (null not permitted).
      See Also:
    • 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).
      See Also:
    • 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).
      See Also:
    • 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).
      See Also:
    • 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).
      See Also:
    • getBarPainter

      public XYBarPainter getBarPainter()
      Returns the bar painter.
      Returns:
      The bar painter (never null).
    • setBarPainter

      public void setBarPainter(XYBarPainter painter)
      Sets the bar painter and sends a RendererChangeEvent to all registered listeners.
      Parameters:
      painter - the painter (null not permitted).
    • getShadowsVisible

      public boolean getShadowsVisible()
      Returns the flag that controls whether or not shadows are drawn for the bars.
      Returns:
      A boolean.
    • setShadowVisible

      public void setShadowVisible(boolean visible)
      Sets the flag that controls whether or not the renderer draws shadows for the bars, and sends a RendererChangeEvent to all registered listeners.
      Parameters:
      visible - the new flag value.
    • getShadowXOffset

      public double getShadowXOffset()
      Returns the shadow x-offset.
      Returns:
      The shadow x-offset.
    • setShadowXOffset

      public void setShadowXOffset(double offset)
      Sets the x-offset for the bar shadow and sends a RendererChangeEvent to all registered listeners.
      Parameters:
      offset - the offset.
    • getShadowYOffset

      public double getShadowYOffset()
      Returns the shadow y-offset.
      Returns:
      The shadow y-offset.
    • setShadowYOffset

      public void setShadowYOffset(double offset)
      Sets the y-offset for the bar shadow and sends a RendererChangeEvent to all registered listeners.
      Parameters:
      offset - the offset.
    • getBarAlignmentFactor

      public double getBarAlignmentFactor()
      Returns the bar alignment factor.
      Returns:
      The bar alignment factor.
    • setBarAlignmentFactor

      public void setBarAlignmentFactor(double factor)
      Sets the bar alignment factor and sends a RendererChangeEvent to all registered listeners. If the alignment factor is outside the range 0.0 to 1.0, no alignment will be performed by the renderer.
      Parameters:
      factor - the factor.
    • getMinimumLabelSize

      public Dimension getMinimumLabelSize()
      Returns the minimum size for the bar to draw a label.
      Returns:
      The minimum size to draw a label.
    • setMinimumLabelSize

      public void setMinimumLabelSize(Dimension minimumLabelSize)
      Sets the minimum size for the bar to draw a label.
      Parameters:
      minimumLabelSize - The size
    • isShowLabelInsideVisibleBar

      public boolean isShowLabelInsideVisibleBar()
      Returns true if the label should be aligned to the visible part of the bar.
      Returns:
      true if the label should be aligned to the visible part of the bar.
      See Also:
    • setShowLabelInsideVisibleBar

      public void setShowLabelInsideVisibleBar(boolean showLabelInsideVisibleBar)
      Sets whether the label should be aligned to the visible part of the bar.
      This setting has no effect when ItemLabelAnchor.isInternal() returns false.
      Parameters:
      showLabelInsideVisibleBar - true to align to the visible part.
    • initialise

      public XYItemRendererState initialise(Graphics2D g2, Rectangle2D dataArea, XYPlot plot, XYDataset dataset, PlotRenderingInfo info)
      Initialises the renderer and returns a state object that should be passed to all subsequent calls to the drawItem() method. Here we calculate the Java2D y-coordinate for zero, since all the bars have their bases fixed at zero.
      Specified by:
      initialise in interface XYItemRenderer
      Overrides:
      initialise in class AbstractXYItemRenderer
      Parameters:
      g2 - the graphics device.
      dataArea - the area inside the axes.
      plot - the plot.
      dataset - the data.
      info - an optional info collection object to return data back to the caller.
      Returns:
      A state object.
    • getLegendItem

      public LegendItem getLegendItem(int datasetIndex, int series)
      Returns a default legend item for the specified series. Subclasses should override this method to generate customised items.
      Specified by:
      getLegendItem in interface XYItemRenderer
      Overrides:
      getLegendItem in class AbstractXYItemRenderer
      Parameters:
      datasetIndex - the dataset index (zero-based).
      series - the series index (zero-based).
      Returns:
      A legend item for the series.
    • drawItem

      public void drawItem(Graphics2D g2, XYItemRendererState state, Rectangle2D dataArea, PlotRenderingInfo info, XYPlot plot, ValueAxis domainAxis, ValueAxis rangeAxis, XYDataset dataset, int series, int item, CrosshairState crosshairState, int pass)
      Draws the visual representation of a single data item.
      Specified by:
      drawItem in interface XYItemRenderer
      Parameters:
      g2 - the graphics device.
      state - the renderer state.
      dataArea - the area within which the plot is being drawn.
      info - collects information about the drawing.
      plot - the plot (can be used to obtain standard color information etc).
      domainAxis - the domain axis.
      rangeAxis - the range axis.
      dataset - the dataset.
      series - the series index (zero-based).
      item - the item index (zero-based).
      crosshairState - crosshair information for the plot (null permitted).
      pass - the pass index.
    • drawItemLabel

      protected void drawItemLabel(Graphics2D g, XYDataset dataset, int series, int item, XYPlot plot, XYItemLabelGenerator generator, Rectangle2D bar, boolean negative)
      Draws an item label. This method is provided as an alternative to AbstractXYItemRenderer.drawItemLabel(Graphics2D, PlotOrientation, XYDataset, int, int, double, double, boolean) so that the bar can be used to calculate the label anchor point.
      Parameters:
      g - the graphics device.
      dataset - the dataset.
      series - the series index.
      item - the item index.
      plot - the plot.
      generator - the label generator (null permitted, in which case the method does nothing, just returns).
      bar - the bar.
      negative - a flag indicating a negative value.
    • calculateLabeltoDraw

      private String calculateLabeltoDraw(String label, Point2D anchorPoint, ItemLabelPosition position, Rectangle2D bar, Graphics2D g2)
      Returns:
      The label to draw or null if label should not be drawn.
    • calculateLabelAnchorPoint

      private Point2D calculateLabelAnchorPoint(ItemLabelAnchor anchor, Rectangle2D bar, PlotOrientation orientation)
      Calculates the item label anchor point.
       Inside:
        +-----------------+
        | 10/11  12   1/2 |
        |   9     C    3  |
        |  7/8    6   4/5 |
        +-----------------+
      
       Outside:
       10/11       12         1/2
           +----------------+
           |                |
         9 |                |  3
           |                |
           +----------------+
        7/8        6          4/5 
       
      Parameters:
      anchor - the anchor.
      bar - the bar.
      orientation - the plot orientation.
      Returns:
      The anchor point.
    • findDomainBounds

      public Range findDomainBounds(XYDataset dataset)
      Returns the lower and upper bounds (range) of the x-values in the specified dataset. Since this renderer uses the x-interval in the dataset, this is taken into account for the range.
      Specified by:
      findDomainBounds in interface XYItemRenderer
      Overrides:
      findDomainBounds in class AbstractXYItemRenderer
      Parameters:
      dataset - the dataset (null permitted).
      Returns:
      The range (null if the dataset is null or empty).
      See Also:
    • findRangeBounds

      public Range findRangeBounds(XYDataset dataset)
      Returns the lower and upper bounds (range) of the y-values in the specified dataset. If the renderer is plotting the y-interval from the dataset, this is taken into account for the range.
      Specified by:
      findRangeBounds in interface XYItemRenderer
      Overrides:
      findRangeBounds in class AbstractXYItemRenderer
      Parameters:
      dataset - the dataset (null permitted).
      Returns:
      The range (null if the dataset is null or empty).
      See Also:
    • clone

      public Object clone() throws CloneNotSupportedException
      Returns a clone of the renderer.
      Specified by:
      clone in interface PublicCloneable
      Overrides:
      clone in class AbstractXYItemRenderer
      Returns:
      A clone.
      Throws:
      CloneNotSupportedException - if the renderer cannot be cloned.
    • equals

      public boolean equals(Object obj)
      Tests this renderer for equality with an arbitrary object.
      Overrides:
      equals in class AbstractXYItemRenderer
      Parameters:
      obj - the object to test against (null permitted).
      Returns:
      A boolean.
    • readObject

      private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException
      Provides serialization support.
      Parameters:
      stream - the input stream.
      Throws:
      IOException - if there is an I/O error.
      ClassNotFoundException - if there is a classpath problem.
    • writeObject

      private void writeObject(ObjectOutputStream stream) throws IOException
      Provides serialization support.
      Parameters:
      stream - the output stream.
      Throws:
      IOException - if there is an I/O error.