我正在创建一个图表,显示sim运行一段时间内的数据。我遇到的问题是我似乎无法使用TimeSeriesCollection,因为它使用从1970年1月1日开始的日期对象。我们要求的日期格式是从模拟开始时间向上计数的日期格式。 / p>
例如,如果发生的事件导致计数在模拟的60分钟标记处增加,则图表上的时间戳将显示为01:00:00(一小时,零分钟,零秒)。如果事件发生在第28小时,第19分钟,第12秒,沿X轴的时间戳需要读取29:19:12。
我正在绘制的数据随着时间的推移而变得很简单。
任何人都可以给我一个关于我能够做到这一点的快速而肮脏的概述吗?
编辑:我应该声明我没有要求使用TimeSeriesCollection。我可以使用JFreeChart库中的任何和所有实用程序。
答案 0 :(得分:2)
RelativeDateFormat类专为此目的而设计。您的数据不需要更改(原样是正确的),只需要调整演示文稿。因此,创建RelativeDateFormat的实例,将其传递给模拟的开始时间,并将其用作轴的日期格式化程序。它将显示相对于开始时间的时间。
答案 1 :(得分:1)
如图here所示,“工厂方法ChartFactory.createTimeSeriesChart()
将接受任何XYDataset
,其中域表示来自Java epoch的毫秒数。” example cited扩展AbstractXYDataset()
;您可以从getX()
的实现和getY()
的整数中返回时间戳。
答案 2 :(得分:0)
我不知道TimeSeriesCollection和JFreeChart的细节,但你可以通过存储模拟开始的时间来解决你的问题,这也是相对于1970年1月1日:
long startTime = new Date().getTime();
然后,您可以从TimeSeriesCollection中的时间中减去startTime值,以获取X轴值。