Charts and plots for Android
Candlestick charts are a special kind of XYPlot
usually used for rendering financial information.
Each “candlestick” is composed of 4 values: open, close, high and low.
Androidplot’s implementation of candlestick charts uses four separate XYSeries
instances to represent
the candlestick values; each series corresponds to one of the four values that composes each “candlestick”.
For example:
Number[] highVals = new Number[] {12, 10, 15, 8, 7};
Number[] lowVals = new Number[] {3, 1, 5, 0, 2};
Number[] openVals = new Number[] {5, 2, 7, 5, 3};
Number[] closeVals = new Number[] {7, 9, 6, 0, 4};
Using the values above, the first candlestick model would be {high=12, low=3, open=5, close=7}
,
the second would be {high=10, low=1, open=2, close=7}
and so on.
There are a few constraints that must be satisfied before we can create XYSeries from the data above and add them to Androidplot:
CandlestickFormatter
instance when being added to the XYPlot.While it’s possible to satisfy these constraints by creating each of the four XYSeries
required by a
candlestick chart, adding them in order using the same formatter, many projects will find it simpler
to interact with the data as though it were a single series of candlestick values. To makr this easier,
two convenience classes: CandlestickSeries
and CandlestickMaker
. Here’s how they are used together to add a candlestick chart to an XYPlot
:
CandlestickSeries candlestickSeries = new CandlestickSeries(
new CandlestickSeries.Item(1, 10, 2, 9),
new CandlestickSeries.Item(4, 18, 6, 5),
new CandlestickSeries.Item(3, 11, 5, 10),
new CandlestickSeries.Item(2, 17, 2, 15),
new CandlestickSeries.Item(6, 11, 11, 7),
new CandlestickSeries.Item(8, 16, 10, 15));
CandlestickFormatter formatter = new CandlestickFormatter();
// add the candlestick series data to the plot:
CandlestickMaker.make(plot, formatter, candlestickSeries);
It’s necessary to use CandlestickMaker
to add the CandlestickSeries
(via “make”) to the
XYPlot
as CandlestickSeries
does not and cannot implement the XYSeries
interface.