代码之家  ›  专栏  ›  技术社区  ›  甄士隐

JFreeChart如何使用OHLCSeries获取烛台KChart的日期值

  •  1
  • 甄士隐  · 技术社区  · 7 年前

    我使用OHLCSeries生成了一个JFreeChart烛台KChart。我伸出烛台。在CandlestickRenderer中,我覆盖了“public Paint getItemPaint(int series,int item)”,在其中我需要每个斯托克城的日期信息来做一些事情,但我不知道如何获取它,请帮助我解决它。

    部分代码如下:

           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?
                }
           }
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   trashgod    7 年前

    如本相关 example ,您可以访问数据集中的必填字段 OHLCSeriesCollection ,使用 series item 传递给实现的值 getItemPaint() 按照您的习惯 CandlestickRenderer . 开始填写此表单 example ,以下渲染器将生成显示的数据值。

    代码:

    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);
    

    慰问:

    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
    

    图表:

    image