1

I generate a JFreeChart CandlestickChart , using OHLCSeries . And I extend CandlestickRenderer. In CandlestickRenderer, I overwrite "public Paint getItemPaint(int series, int item)" , in it I need the every stoke's date info to do something, but I don't know to get it , please help me to solve it.

Part of Codes as following:

       OHLCSeries ohlcSeries = new OHLCSeries("Price");
       for(Records record : recordslist ) {
           double h =...;
           ....
           LocalDate actionday = record.getRecordsDay ();
           int year = actionday.getYear();
           int month = actionday.getMonthValue();
           int day = actionday.getDayOfMonth();
           ohlcSeries.add(new Day(day,month,year), open, high, low, close);
       }
       OHLCSeriesCollection candlestickDataset.addSeries(ohlcSeries);
       JFreeChart candlestickChart = ChartFactory.createCandlestickChart("", "","", candlestickDataset, true);

       DateAxis  dayAxis = new DateAxis (); 
       candlestickChart.getXYPlot().setDomainAxis(dayAxis);

       class AnalysisCandlestickRenderer extends CandlestickRenderer {
            public Paint getItemPaint(int series, int item) {
                //here I need every stoke's date info , how can I get it?
            }
       }
甄士隐
  • 29
  • 4

1 Answers1

1

As suggested in this related example, you can access the required field in your dataset, an OHLCSeriesCollection, using the series and item values passed to your implementation of getItemPaint() in your custom CandlestickRenderer. Starting form this complete example, the following renderer produces the data values shown.

Code:

private final OHLCSeriesCollection seriesCollection = new OHLCSeriesCollection();
…
class AnalysisCandlestickRenderer extends CandlestickRenderer {

    @Override
    public Paint getItemPaint(int series, int item) {
        OHLCSeries currentSeries = seriesCollection.getSeries(series);
        System.out.println(series + ": " + currentSeries.getPeriod(item));
        return super.getItemPaint(item, item);
    }
}
…
CandlestickRenderer r = new AnalysisCandlestickRenderer();
chart.getXYPlot().setRenderer(r);

Console:

1: Wed Jan 01 12:00:00 EST 2014
1: Wed Jan 01 12:01:00 EST 2014
1: Wed Jan 01 12:02:00 EST 2014
1: Wed Jan 01 12:03:00 EST 2014
1: Wed Jan 01 12:04:00 EST 2014
0: Wed Jan 01 12:00:00 EST 2014
0: Wed Jan 01 12:01:00 EST 2014
0: Wed Jan 01 12:02:00 EST 2014
0: Wed Jan 01 12:03:00 EST 2014
0: Wed Jan 01 12:04:00 EST 2014
0: Wed Jan 01 12:05:00 EST 2014
0: Wed Jan 01 12:06:00 EST 2014
0: Wed Jan 01 12:07:00 EST 2014
0: Wed Jan 01 12:08:00 EST 2014
0: Wed Jan 01 12:09:00 EST 2014

Chart:

image

trashgod
  • 203,806
  • 29
  • 246
  • 1,045