org.jfree.chart.renderer.xy

## Class XYBoxAndWhiskerRenderer

- java.lang.Object
- - org.jfree.chart.renderer.AbstractRenderer
  - - org.jfree.chart.renderer.xy.AbstractXYItemRenderer
    - - org.jfree.chart.renderer.xy.XYBoxAndWhiskerRenderer

All Implemented Interfaces:
  java.io.Serializable, java.lang.Cloneable, java.util.EventListener, AnnotationChangeListener, LegendItemSource, XYItemRenderer, org.jfree.util.PublicCloneable

    public class XYBoxAndWhiskerRenderer
    extends AbstractXYItemRenderer
    implements XYItemRenderer, java.lang.Cloneable, org.jfree.util.PublicCloneable, java.io.Serializable

A renderer that draws box-and-whisker items on an `XYPlot`. This renderer requires a `BoxAndWhiskerXYDataset`). The example shown here is generated by the `BoxAndWhiskerChartDemo2.java` program included in the JFreeChart demo collection:

This renderer does not include any code to calculate the crosshair point.

See Also:
  Serialized Form

### Field Summary

### 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

Constructors
Constructor and Description
`XYBoxAndWhiskerRenderer()` Creates a new renderer for box and whisker charts.
`XYBoxAndWhiskerRenderer(double boxWidth)` Creates a new renderer for box and whisker charts.

### Method Summary

Methods
`java.lang.Object` `clone()` Returns a clone of the renderer.
`protected void` `drawEllipse(java.awt.geom.Point2D point, double oRadius, java.awt.Graphics2D g2)` Draws an ellipse to represent an outlier.
`protected void` `drawHighFarOut(double aRadius, java.awt.Graphics2D g2, double xx, double m)` Draws a triangle to indicate the presence of far out values.
`void` `drawHorizontalItem(java.awt.Graphics2D g2, java.awt.geom.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.
`void` `drawItem(java.awt.Graphics2D g2, XYItemRendererState state, java.awt.geom.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.
`protected void` `drawLowFarOut(double aRadius, java.awt.Graphics2D g2, double xx, double m)` Draws a triangle to indicate the presence of far out values.
`protected void` `drawMultipleEllipse(java.awt.geom.Point2D point, double boxWidth, double oRadius, java.awt.Graphics2D g2)` Draws two ellipses to represent overlapping outliers.
`void` `drawVerticalItem(java.awt.Graphics2D g2, java.awt.geom.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.
`boolean` `equals(java.lang.Object obj)` Tests this renderer for equality with another object.
`Range` `findRangeBounds(XYDataset dataset)` Returns the range of values the renderer requires to display all the items from the specified dataset.
`java.awt.Paint` `getArtifactPaint()` Returns the paint used to paint the various artifacts such as outliers, farout symbol, median line and the averages ellipse.
`java.awt.Paint` `getBoxPaint()` Returns the paint used to fill boxes.
`double` `getBoxWidth()` Returns the width of each box.
`boolean` `getFillBox()` Returns the flag that controls whether or not the box is filled.
`protected java.awt.Paint` `lookupBoxPaint(int series, int item)` Returns the box paint or, if this is `null`, the item paint.
`void` `setArtifactPaint(java.awt.Paint paint)` Sets the paint used to paint the various artifacts such as outliers, farout symbol, median line and the averages ellipse, and sends a `RendererChangeEvent` to all registered listeners.
`void` `setBoxPaint(java.awt.Paint paint)` Sets the paint used to fill boxes and sends a `RendererChangeEvent` to all registered listeners.
`void` `setBoxWidth(double width)` Sets the box width and sends a `RendererChangeEvent` to all registered listeners.
`void` `setFillBox(boolean flag)` Sets the flag that controls whether or not the box is filled and sends a `RendererChangeEvent` to all registered listeners.

### Methods inherited from class org.jfree.chart.renderer.xy.AbstractXYItemRenderer

`addAnnotation, addAnnotation, addEntity, annotationChanged, calculateDomainMarkerTextAnchorPoint, drawAnnotations, drawDomainGridLine, drawDomainLine, drawDomainMarker, drawItemLabel, drawRangeLine, drawRangeMarker, fillDomainGridBand, fillRangeGridBand, findDomainBounds, findDomainBounds, findRangeBounds, getAnnotations, getBaseItemLabelGenerator, getBaseToolTipGenerator, getDrawingSupplier, getItemLabelGenerator, getItemLabelGenerator, getLegendItem, getLegendItemLabelGenerator, getLegendItems, getLegendItemToolTipGenerator, getLegendItemURLGenerator, getPassCount, getPlot, getSeriesItemLabelGenerator, getSeriesToolTipGenerator, getToolTipGenerator, getToolTipGenerator, getURLGenerator, initialise, isPointInRect, lineTo, moveTo, removeAnnotation, removeAnnotations, setBaseItemLabelGenerator, setBaseToolTipGenerator, setItemLabelGenerator, setLegendItemLabelGenerator, setLegendItemToolTipGenerator, setLegendItemURLGenerator, setPlot, setSeriesItemLabelGenerator, setSeriesToolTipGenerator, setToolTipGenerator, setURLGenerator, updateCrosshairValues, 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, hashCode, 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.xy.XYItemRenderer

`addAnnotation, addAnnotation, addChangeListener, drawAnnotations, drawDomainGridLine, drawDomainMarker, drawRangeLine, drawRangeMarker, fillDomainGridBand, fillRangeGridBand, findDomainBounds, getBaseItemLabelFont, getBaseItemLabelGenerator, getBaseItemLabelPaint, getBaseItemLabelsVisible, getBaseNegativeItemLabelPosition, getBaseOutlinePaint, getBaseOutlineStroke, getBasePaint, getBasePositiveItemLabelPosition, getBaseSeriesVisible, getBaseSeriesVisibleInLegend, getBaseShape, getBaseStroke, getBaseToolTipGenerator, getItemLabelFont, getItemLabelFont, getItemLabelGenerator, getItemLabelPaint, getItemLabelPaint, getItemOutlinePaint, getItemOutlineStroke, getItemPaint, getItemShape, getItemStroke, getItemVisible, getLegendItem, getLegendItemLabelGenerator, getNegativeItemLabelPosition, getNegativeItemLabelPosition, getPassCount, getPlot, getPositiveItemLabelPosition, getPositiveItemLabelPosition, getSeriesItemLabelFont, getSeriesItemLabelGenerator, getSeriesItemLabelPaint, getSeriesNegativeItemLabelPosition, getSeriesOutlinePaint, getSeriesOutlineStroke, getSeriesPaint, getSeriesPositiveItemLabelPosition, getSeriesShape, getSeriesStroke, getSeriesToolTipGenerator, getSeriesVisible, getSeriesVisible, getSeriesVisibleInLegend, getSeriesVisibleInLegend, getToolTipGenerator, getURLGenerator, initialise, isItemLabelVisible, isSeriesItemLabelsVisible, isSeriesVisible, isSeriesVisibleInLegend, removeAnnotation, removeAnnotations, removeChangeListener, setBaseItemLabelFont, setBaseItemLabelGenerator, setBaseItemLabelPaint, setBaseItemLabelsVisible, setBaseItemLabelsVisible, setBaseItemLabelsVisible, setBaseNegativeItemLabelPosition, setBaseNegativeItemLabelPosition, setBaseOutlinePaint, setBaseOutlineStroke, setBasePaint, setBasePositiveItemLabelPosition, setBasePositiveItemLabelPosition, setBaseSeriesVisible, setBaseSeriesVisible, setBaseSeriesVisibleInLegend, setBaseSeriesVisibleInLegend, setBaseShape, setBaseStroke, setBaseToolTipGenerator, setItemLabelFont, setItemLabelGenerator, setItemLabelPaint, setItemLabelsVisible, setItemLabelsVisible, setItemLabelsVisible, setLegendItemLabelGenerator, setNegativeItemLabelPosition, setNegativeItemLabelPosition, setOutlinePaint, setOutlineStroke, setPaint, setPlot, setPositiveItemLabelPosition, setPositiveItemLabelPosition, setSeriesItemLabelFont, setSeriesItemLabelGenerator, setSeriesItemLabelPaint, setSeriesItemLabelsVisible, setSeriesItemLabelsVisible, setSeriesItemLabelsVisible, setSeriesNegativeItemLabelPosition, setSeriesNegativeItemLabelPosition, setSeriesOutlinePaint, setSeriesOutlineStroke, setSeriesPaint, setSeriesPositiveItemLabelPosition, setSeriesPositiveItemLabelPosition, setSeriesShape, setSeriesStroke, setSeriesToolTipGenerator, setSeriesVisible, setSeriesVisible, setSeriesVisible, setSeriesVisible, setSeriesVisibleInLegend, setSeriesVisibleInLegend, setSeriesVisibleInLegend, setSeriesVisibleInLegend, setShape, setStroke, setToolTipGenerator, setURLGenerator`

### Methods inherited from interface org.jfree.chart.LegendItemSource

`getLegendItems`

### Constructor Detail

#### XYBoxAndWhiskerRenderer

    public XYBoxAndWhiskerRenderer()

Creates a new renderer for box and whisker charts.

#### XYBoxAndWhiskerRenderer

    public XYBoxAndWhiskerRenderer(double boxWidth)

Creates a new renderer for box and whisker charts.

Use -1 for the box width if you prefer the width to be calculated automatically.

Parameters:
  `boxWidth` - the box width.

### Method Detail

#### getBoxWidth

    public double getBoxWidth()

Returns the width of each box.

Returns:
  The box width.
See Also:
  `setBoxWidth(double)`

#### setBoxWidth

    public void setBoxWidth(double width)

Sets the box width and sends a `RendererChangeEvent` to all registered listeners.

If you set the width to a negative value, the renderer will calculate the box width automatically based on the space available on the chart.

Parameters:
  `width` - the width.
See Also:
  `getBoxWidth()`

#### getBoxPaint

    public java.awt.Paint getBoxPaint()

Returns the paint used to fill boxes.

Returns:
  The paint (possibly `null`).
See Also:
  `setBoxPaint(Paint)`

#### setBoxPaint

    public void setBoxPaint(java.awt.Paint paint)

Sets the paint used to fill boxes and sends a `RendererChangeEvent` to all registered listeners.

Parameters:
  `paint` - the paint (`null` permitted).
See Also:
  `getBoxPaint()`

#### getFillBox

    public boolean getFillBox()

Returns the flag that controls whether or not the box is filled.

Returns:
  A boolean.
See Also:
  `setFillBox(boolean)`

#### setFillBox

    public void setFillBox(boolean flag)

Sets the flag that controls whether or not the box is filled and sends a `RendererChangeEvent` to all registered listeners.

Parameters:
  `flag` - the flag.
See Also:
  `setFillBox(boolean)`

#### getArtifactPaint

    public java.awt.Paint getArtifactPaint()

Returns the paint used to paint the various artifacts such as outliers, farout symbol, median line and the averages ellipse.

Returns:
  The paint (never `null`).
See Also:
  `setArtifactPaint(Paint)`

#### setArtifactPaint

    public void setArtifactPaint(java.awt.Paint paint)

Sets the paint used to paint the various artifacts such as outliers, farout symbol, median line and the averages ellipse, and sends a `RendererChangeEvent` to all registered listeners.

Parameters:
  `paint` - the paint (`null` not permitted).
See Also:
  `getArtifactPaint()`

#### findRangeBounds

    public Range findRangeBounds(XYDataset dataset)

Returns the range of values the renderer requires to display all the items from the specified dataset.

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:
  `AbstractXYItemRenderer.findDomainBounds(XYDataset)`

#### lookupBoxPaint

    protected java.awt.Paint lookupBoxPaint(int series,
                                int item)

Returns the box paint or, if this is `null`, the item paint.

Parameters:
  `series` - the series index.
  `item` - the item index.
Returns:
  The paint used to fill the box for the specified item (never `null`).
Since:
  1.0.10

#### drawItem

    public void drawItem(java.awt.Graphics2D g2,
                XYItemRendererState state,
                java.awt.geom.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 info 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 (must be an instance of `BoxAndWhiskerXYDataset`).
  `series` - the series index (zero-based).
  `item` - the item index (zero-based).
  `crosshairState` - crosshair information for the plot (`null` permitted).
  `pass` - the pass index.

#### drawHorizontalItem

    public void drawHorizontalItem(java.awt.Graphics2D g2,
                          java.awt.geom.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.

Parameters:
  `g2` - the graphics device.
  `dataArea` - the area within which the plot is being drawn.
  `info` - collects info 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 (must be an instance of `BoxAndWhiskerXYDataset`).
  `series` - the series index (zero-based).
  `item` - the item index (zero-based).
  `crosshairState` - crosshair information for the plot (`null` permitted).
  `pass` - the pass index.

#### drawVerticalItem

    public void drawVerticalItem(java.awt.Graphics2D g2,
                        java.awt.geom.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.

Parameters:
  `g2` - the graphics device.
  `dataArea` - the area within which the plot is being drawn.
  `info` - collects info 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 (must be an instance of `BoxAndWhiskerXYDataset`).
  `series` - the series index (zero-based).
  `item` - the item index (zero-based).
  `crosshairState` - crosshair information for the plot (`null` permitted).
  `pass` - the pass index.

#### drawEllipse

    protected void drawEllipse(java.awt.geom.Point2D point,
                   double oRadius,
                   java.awt.Graphics2D g2)

Draws an ellipse to represent an outlier.

Parameters:
  `point` - the location.
  `oRadius` - the radius.
  `g2` - the graphics device.

#### drawMultipleEllipse

    protected void drawMultipleEllipse(java.awt.geom.Point2D point,
                           double boxWidth,
                           double oRadius,
                           java.awt.Graphics2D g2)

Draws two ellipses to represent overlapping outliers.

Parameters:
  `point` - the location.
  `boxWidth` - the box width.
  `oRadius` - the radius.
  `g2` - the graphics device.

#### drawHighFarOut

    protected void drawHighFarOut(double aRadius,
                      java.awt.Graphics2D g2,
                      double xx,
                      double m)

Draws a triangle to indicate the presence of far out values.

Parameters:
  `aRadius` - the radius.
  `g2` - the graphics device.
  `xx` - the x value.
  `m` - the max y value.

#### drawLowFarOut

    protected void drawLowFarOut(double aRadius,
                     java.awt.Graphics2D g2,
                     double xx,
                     double m)

Draws a triangle to indicate the presence of far out values.

Parameters:
  `aRadius` - the radius.
  `g2` - the graphics device.
  `xx` - the x value.
  `m` - the min y value.

#### equals

    public boolean equals(java.lang.Object obj)

Tests this renderer for equality with another object.

Overrides:
  `equals` in class `AbstractXYItemRenderer`
Parameters:
  `obj` - the object (`null` permitted).
Returns:
  `true` or `false`.

#### clone

    public java.lang.Object clone()
                           throws java.lang.CloneNotSupportedException

Returns a clone of the renderer.

Specified by:
  `clone` in interface `org.jfree.util.PublicCloneable`
Overrides:
  `clone` in class `AbstractXYItemRenderer`
Returns:
  A clone.
Throws:
  `java.lang.CloneNotSupportedException` - if the renderer cannot be cloned.