当前位置: 首页 > 知识库问答 >
问题:

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

郎俊雅
2023-03-14

我使用OHLCSeries生成了一个JFreeChart CandlestickChart。我扩展了CandlestickRenader。在CandlestickRenader中,我覆盖了“public Paint getItemPaint(int系列,int项目)”,在其中我需要每个Stoke的日期信息来做某事,但我不知道如何获取它,请帮我解决。

部分代码如下:

       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个答案

郑伟彦
2023-03-14

如相关示例所示,您可以使用传递到自定义< code>CandlestickRenderer中的< code>series和< code>item实现的值来访问数据集中的必填字段< code > OHLCSeriesCollection 。从这个完整的示例开始,下面的渲染器产生所示的数据值。

代码:

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

图表:

 类似资料:
  • 这参考了蜡烛图的JFreeChart渲染。下面是使用JFreeChart生成蜡烛棒图表的代码片段。 这段代码已经过测试,并且已经运行了很长时间。但是,JFreeChart的版本已从1.0.17更改为1.0.19,使用1.0.19生成的烛台图表显示蜡烛对象/线的污迹。当我将库更改回1.0.17时,烛台对象/线再次变得清晰。 下面提供了两个库的图像。 我曾试图找出原因,但至今仍不成功。现在的问题是,由

  • 这是这个问题的后续问题。 发生的情况如下: 当我启动图形并拖动图形时,奇怪的事情发生了:在一定的间隔内,似乎每7个周期,烛台就会越来越小,直到它们变成一条条纹。然后,当我进一步拖动时,它们再次变厚,直到它们再次变为正常大小。这似乎每7个周期发生一次。 这种现象的一个示例显示在以下3张图片上: 下面的代码将准确地显示我的意思。只需编译并运行它。然后按住,用鼠标在图形上单击并按住。现在尝试向右或向左拖

  • 我正在开发一个显示每日财务数据的应用程序,并选择使用JFreeChart。我能够学习如何创建烛台图表,但我的问题在于定制。 你看,我的目标更像是 然而,到目前为止,我所能做的就是 无论我放大多远,烛台的宽度都不会增加。 我相当肯定,不知何故,薄烛台与一定的时间范围有关。。我已经试着去补救,但我不确定我到底做错了什么。

  • 大多数财务图表库使用一些规则来为蜡烛着色: 如果<代码>关闭 jFreeChart似乎有自己的着色规则,可以更改它们。默认情况下,该图表如下所示(某些颜色已更改): 如您所见,可以更改蜡烛、背景、绘图边框等的颜色。 我想在图表中实现规则1和2(上面)。可能吗? 结果应该是这样的: 这是我目前在示例中使用的烛台: 似乎只需将设置为并绘制颜色不变即可。 但主要问题仍然存在: > 在jFreeChart

  • 在plottable中创建烛台图的最佳方法是什么?我想做一些类似于wiki上的图像的事情:wiki示例 我在考虑使用堆叠的酒吧情节,并用css对其进行样式化。例如,条形图中最下面的值是透明的,只是为了垂直放置烛台。条形图中的下一个值将是下杆(用css水平挤压的矩形成为直线)。接下来是已经是矩形的身体,上面的棍子将再次被挤压成矩形。 这是正确的方法还是有更优雅的解决方案?外面有什么例子吗?以前有人做

  • 下面是我用来访问过去10天前的日期的代码。输出为'20130103',即今天的日期。我如何返回今天的日期-10天?我被限制使用内置的java日期类,所以不能使用joda时间。