org.jfree.chart.renderer.xy
Class CandlestickRenderer

java.lang.Object
  extended byorg.jfree.chart.renderer.AbstractRenderer
      extended byorg.jfree.chart.renderer.xy.AbstractXYItemRenderer
          extended byorg.jfree.chart.renderer.xy.CandlestickRenderer
All Implemented Interfaces:
java.lang.Cloneable, LegendItemSource, java.io.Serializable, XYItemRenderer

public class CandlestickRenderer
extends AbstractXYItemRenderer
implements XYItemRenderer, java.lang.Cloneable, java.io.Serializable

A renderer that draws candlesticks on an XYPlot (requires a OHLCDataset).

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

Author:
Sylvain Vieujot
See Also:
Serialized Form

Field Summary
static int WIDTHMETHOD_AVERAGE
          The average width method.
static int WIDTHMETHOD_INTERVALDATA
          The interval data method.
static int WIDTHMETHOD_SMALLEST
          The smallest width method.
 
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
CandlestickRenderer()
          Creates a new renderer for candlestick charts.
CandlestickRenderer(double candleWidth)
          Creates a new renderer for candlestick charts.
CandlestickRenderer(double candleWidth, boolean drawVolume, XYToolTipGenerator toolTipGenerator)
          Creates a new renderer for candlestick charts.
 
Method Summary
 java.lang.Object clone()
          Returns a clone of the renderer.
 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.
 boolean drawVolume()
          Returns a flag indicating whether or not volume bars are drawn on the chart.
 boolean equals(java.lang.Object obj)
          Tests this renderer for equality with another object.
 double getAutoWidthFactor()
          Returns the factor by which the available space automatically calculated for the candles will be multiplied to determine the actual width to use.
 double getAutoWidthGap()
          Returns the amount of space to leave on the left and right of each candle when automatically calculating widths.
 int getAutoWidthMethod()
          Returns the method of automatically calculating the candle width.
 double getCandleWidth()
          Returns the width of each candle.
 java.awt.Paint getDownPaint()
          Returns the paint used to fill candles when the price moves down from open to close.
 double getMaxCandleWidthInMilliseconds()
          Returns the maximum width (in milliseconds) of each candle.
 java.awt.Paint getUpPaint()
          Returns the paint used to fill candles when the price moves up from open to close.
 XYItemRendererState initialise(java.awt.Graphics2D g2, java.awt.geom.Rectangle2D dataArea, XYPlot plot, XYDataset dataset, PlotRenderingInfo info)
          Initialises the renderer then returns the number of 'passes' through the data that the renderer will require (usually just one).
 void setAutoWidthFactor(double autoWidthFactor)
          Sets the factor by which the available space automatically calculated for the candles will be multiplied to determine the actual width to use.
 void setAutoWidthGap(double autoWidthGap)
          Sets the amount of space to leave on the left and right of each candle when automatically calculating widths.
 void setAutoWidthMethod(int autoWidthMethod)
          Sets the method of automatically calculating the candle width.
 void setCandleWidth(double width)
          Sets the candle width.
 void setDownPaint(java.awt.Paint paint)
          Sets the paint used to fill candles when the price moves down from open to close.
 void setDrawVolume(boolean flag)
          Sets a flag that controls whether or not volume bars are drawn in the background.
 void setMaxCandleWidthInMilliseconds(double millis)
          Sets the maximum candle width (in milliseconds).
 void setUpPaint(java.awt.Paint paint)
          Sets the paint used to fill candles when the price moves up from open to close.
 
Methods inherited from class org.jfree.chart.renderer.xy.AbstractXYItemRenderer
addAnnotation, addAnnotation, addEntity, calculateDomainMarkerTextAnchorPoint, drawAnnotations, drawDomainGridLine, drawDomainMarker, drawItemLabel, drawRangeLine, drawRangeMarker, fillDomainGridBand, fillRangeGridBand, findDomainBounds, findRangeBounds, getBaseLabelGenerator, getBaseToolTipGenerator, getDefaultEntityRadius, getDrawingSupplier, getLabelGenerator, getLegendItem, getLegendItemLabelGenerator, getLegendItems, getPassCount, getPlot, getSeriesLabelGenerator, getSeriesToolTipGenerator, getToolTipGenerator, getURLGenerator, removeAnnotation, removeAnnotations, setBaseLabelGenerator, setBaseToolTipGenerator, setDefaultEntityRadius, setLabelGenerator, setLegendItemLabelGenerator, setPlot, setSeriesLabelGenerator, setSeriesToolTipGenerator, setToolTipGenerator, setURLGenerator, updateCrosshairValues
 
Methods inherited from class org.jfree.chart.renderer.AbstractRenderer
addChangeListener, calculateLabelAnchorPoint, getBaseCreateEntities, getBaseFillPaint, getBaseItemLabelFont, getBaseItemLabelPaint, getBaseItemLabelsVisible, getBaseNegativeItemLabelPosition, getBaseOutlinePaint, getBaseOutlineStroke, getBasePaint, getBasePositiveItemLabelPosition, getBaseSeriesVisible, getBaseSeriesVisibleInLegend, getBaseShape, getBaseStroke, getCreateEntities, 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, hashCode, isItemLabelVisible, isSeriesItemLabelsVisible, 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
 
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, findRangeBounds, getBaseItemLabelFont, getBaseItemLabelPaint, getBaseItemLabelsVisible, getBaseLabelGenerator, getBaseNegativeItemLabelPosition, getBaseOutlinePaint, getBaseOutlineStroke, getBasePaint, getBasePositiveItemLabelPosition, getBaseSeriesVisible, getBaseSeriesVisibleInLegend, getBaseShape, getBaseStroke, getBaseToolTipGenerator, getItemLabelFont, getItemLabelFont, getItemLabelPaint, getItemLabelPaint, getItemOutlinePaint, getItemOutlineStroke, getItemPaint, getItemShape, getItemStroke, getItemVisible, getLabelGenerator, getLegendItem, getNegativeItemLabelPosition, getNegativeItemLabelPosition, getPassCount, getPlot, getPositiveItemLabelPosition, getPositiveItemLabelPosition, getSeriesItemLabelFont, getSeriesItemLabelPaint, getSeriesLabelGenerator, getSeriesNegativeItemLabelPosition, getSeriesOutlinePaint, getSeriesOutlineStroke, getSeriesPaint, getSeriesPositiveItemLabelPosition, getSeriesShape, getSeriesStroke, getSeriesToolTipGenerator, getSeriesVisible, getSeriesVisible, getSeriesVisibleInLegend, getSeriesVisibleInLegend, getToolTipGenerator, getURLGenerator, isItemLabelVisible, isSeriesItemLabelsVisible, isSeriesVisibleInLegend, removeAnnotation, removeAnnotations, removeChangeListener, setBaseItemLabelFont, setBaseItemLabelPaint, setBaseItemLabelsVisible, setBaseItemLabelsVisible, setBaseItemLabelsVisible, setBaseLabelGenerator, setBaseNegativeItemLabelPosition, setBaseNegativeItemLabelPosition, setBaseOutlinePaint, setBaseOutlineStroke, setBasePaint, setBasePositiveItemLabelPosition, setBasePositiveItemLabelPosition, setBaseSeriesVisible, setBaseSeriesVisible, setBaseSeriesVisibleInLegend, setBaseSeriesVisibleInLegend, setBaseShape, setBaseStroke, setBaseToolTipGenerator, setItemLabelFont, setItemLabelPaint, setItemLabelsVisible, setItemLabelsVisible, setItemLabelsVisible, setLabelGenerator, setNegativeItemLabelPosition, setNegativeItemLabelPosition, setOutlinePaint, setOutlineStroke, setPaint, setPlot, setPositiveItemLabelPosition, setPositiveItemLabelPosition, setSeriesItemLabelFont, setSeriesItemLabelPaint, setSeriesItemLabelsVisible, setSeriesItemLabelsVisible, setSeriesItemLabelsVisible, setSeriesLabelGenerator, 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
 

Field Detail

WIDTHMETHOD_AVERAGE

public static final int WIDTHMETHOD_AVERAGE
The average width method.

See Also:
Constant Field Values

WIDTHMETHOD_SMALLEST

public static final int WIDTHMETHOD_SMALLEST
The smallest width method.

See Also:
Constant Field Values

WIDTHMETHOD_INTERVALDATA

public static final int WIDTHMETHOD_INTERVALDATA
The interval data method.

See Also:
Constant Field Values
Constructor Detail

CandlestickRenderer

public CandlestickRenderer()
Creates a new renderer for candlestick charts.


CandlestickRenderer

public CandlestickRenderer(double candleWidth)
Creates a new renderer for candlestick charts.

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

Parameters:
candleWidth - The candle width.

CandlestickRenderer

public CandlestickRenderer(double candleWidth,
                           boolean drawVolume,
                           XYToolTipGenerator toolTipGenerator)
Creates a new renderer for candlestick charts.

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

Parameters:
candleWidth - the candle width.
drawVolume - a flag indicating whether or not volume bars should be drawn.
toolTipGenerator - the tool tip generator. null is none.
Method Detail

getCandleWidth

public double getCandleWidth()
Returns the width of each candle.

Returns:
the candle width.
See Also:
setCandleWidth(double)

setCandleWidth

public void setCandleWidth(double width)
Sets the candle width.

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

Parameters:
width - The width.
See Also:
setAutoWidthMethod(int), setAutoWidthGap(double), setAutoWidthFactor(double), setMaxCandleWidthInMilliseconds(double)

getMaxCandleWidthInMilliseconds

public double getMaxCandleWidthInMilliseconds()
Returns the maximum width (in milliseconds) of each candle.

Returns:
The maximum candle width in milliseconds.

setMaxCandleWidthInMilliseconds

public void setMaxCandleWidthInMilliseconds(double millis)
Sets the maximum candle width (in milliseconds).

Parameters:
millis - The maximum width.
See Also:
setCandleWidth(double), setAutoWidthMethod(int), setAutoWidthGap(double), setAutoWidthFactor(double)

getAutoWidthMethod

public int getAutoWidthMethod()
Returns the method of automatically calculating the candle width.

Returns:
The method of automatically calculating the candle width.

setAutoWidthMethod

public void setAutoWidthMethod(int autoWidthMethod)
Sets the method of automatically calculating the candle width.

WIDTHMETHOD_AVERAGE: Divides the entire display (ignoring scale factor) by the number of items, and uses this as the available width.
WIDTHMETHOD_SMALLEST: Checks the interval between each item, and uses the smallest as the available width.
WIDTHMETHOD_INTERVALDATA: Assumes that the dataset supports the IntervalXYDataset interface, and uses the startXValue - endXValue as the available width.

Parameters:
autoWidthMethod - The method of automatically calculating the candle width.
See Also:
WIDTHMETHOD_AVERAGE, WIDTHMETHOD_SMALLEST, WIDTHMETHOD_INTERVALDATA, setCandleWidth(double), setAutoWidthGap(double), setAutoWidthFactor(double), setMaxCandleWidthInMilliseconds(double)

getAutoWidthFactor

public double getAutoWidthFactor()
Returns the factor by which the available space automatically calculated for the candles will be multiplied to determine the actual width to use.

Returns:
The width factor (generally between 0.0 and 1.0).

setAutoWidthFactor

public void setAutoWidthFactor(double autoWidthFactor)
Sets the factor by which the available space automatically calculated for the candles will be multiplied to determine the actual width to use.

Parameters:
autoWidthFactor - The width factor (generally between 0.0 and 1.0).
See Also:
setCandleWidth(double), setAutoWidthMethod(int), setAutoWidthGap(double), setMaxCandleWidthInMilliseconds(double)

getAutoWidthGap

public double getAutoWidthGap()
Returns the amount of space to leave on the left and right of each candle when automatically calculating widths.

Returns:
The gap.

setAutoWidthGap

public void setAutoWidthGap(double autoWidthGap)
Sets the amount of space to leave on the left and right of each candle when automatically calculating widths.

Parameters:
autoWidthGap - The gap.
See Also:
setCandleWidth(double), setAutoWidthMethod(int), setAutoWidthFactor(double), setMaxCandleWidthInMilliseconds(double)

getUpPaint

public java.awt.Paint getUpPaint()
Returns the paint used to fill candles when the price moves up from open to close.

Returns:
The paint.

setUpPaint

public void setUpPaint(java.awt.Paint paint)
Sets the paint used to fill candles when the price moves up from open to close.

Registered property change listeners are notified that the "CandleStickRenderer.upPaint" property has changed.

Parameters:
paint - The paint.

getDownPaint

public java.awt.Paint getDownPaint()
Returns the paint used to fill candles when the price moves down from open to close.

Returns:
The paint.

setDownPaint

public void setDownPaint(java.awt.Paint paint)
Sets the paint used to fill candles when the price moves down from open to close.

Registered property change listeners are notified that the "CandleStickRenderer.downPaint" property has changed.

Parameters:
paint - The paint.

drawVolume

public boolean drawVolume()
Returns a flag indicating whether or not volume bars are drawn on the chart.

Returns:
true if volume bars are drawn on the chart.

setDrawVolume

public void setDrawVolume(boolean flag)
Sets a flag that controls whether or not volume bars are drawn in the background.

Parameters:
flag - The flag.

initialise

public XYItemRendererState initialise(java.awt.Graphics2D g2,
                                      java.awt.geom.Rectangle2D dataArea,
                                      XYPlot plot,
                                      XYDataset dataset,
                                      PlotRenderingInfo info)
Initialises the renderer then returns the number of 'passes' through the data that the renderer will require (usually just one). This method will be called before the first item is rendered, giving the renderer an opportunity to initialise any state information it wants to maintain. The renderer can do nothing if it chooses.

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:
The number of passes the renderer requires.

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.
series - the series index (zero-based).
item - the item index (zero-based).
crosshairState - crosshair information for the plot (null permitted).
pass - the pass index.

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.
Returns:
true or false.

clone

public java.lang.Object clone()
                       throws java.lang.CloneNotSupportedException
Returns a clone of the renderer.

Overrides:
clone in class AbstractXYItemRenderer
Returns:
A clone.
Throws:
java.lang.CloneNotSupportedException - if the renderer cannot be cloned.