我正在用jfreechart制作一个动态图表来显示烤箱记录的温度。这些值每2秒被记录一次,并存储在一个数据库中,然后我把它显示在我的动态图表上。烤箱总是在运行,目标是能够看到温度是否出现任何峰值(注意,实际上有多个烤箱)。
我的工作主要是围绕垃圾神的回应,或者其他关于这个主题的回应。
以下是我的代码的简化版本:
public test(final String title) {
super(title);
final DynamicTimeSeriesCollection dataset =
new DynamicTimeSeriesCollection(3, 10, new Second()); // 1
dataset.setTimeBase(new Second(new Date()));
[...]
private JFreeChart createChart(final XYDataset dataset) {
final JFreeChart result = ChartFactory.createTimeSeriesChart(
TITLE, "hh:mm:ss", "°C", dataset, true, true, false);
final XYPlot plot = result.getXYPlot();
ValueAxis domain = plot.getDomainAxis();
domain.setAutoRange(true);
ValueAxis range = plot.getRangeAxis();
range.setRange(-MINMAX, MINMAX);
DateAxis axis = (DateAxis) plot.getDomainAxis();
axis.setFixedAutoRange(10000); // 2
return result;
}
现在,我有几点我不明白。首先如文件所述 public DynamicTimeSeriesCollection(int nSeries,int nMoments,RegularTimePeriod timeSample) Parameters: nSeries - the number of series, nMoments - the number of items per series, timeSample - a time period sample.
问题是,当我在代码中将nmoments设置为10时,显示的时间很好,这意味着它非常接近我的计算机上显示的实际时间,但我离要监视的2天时间段很远,因为它只显示最后10项。但是当我增加nmoments(每个系列的项目数)时,显示的时间不是“真实”的时间,如果我增加太多,它甚至不会加载。
我只想能够有一个足够长的dateaxis,这样我就可以看到我2天前得到的值,但在一个动态的方式(一个2天周期的fifo),但我也需要dateaxis足够准确。
我主要使用//1和//2中的值,但我无法使它按我所希望的方式工作,而且我对如何使用这两个值也没有想法。我设法设置了//2,这样我就有了2天的时间范围,但是数据仍然是10项的fifo,正如我所说的,我的印象是,当我增加这个限制时,时间不对。
我也考虑过使用TimePeriesCollection,但我没有正确地使用它来实现某些功能。我是否需要在这方面进行更深入的研究,或者我是否可以通过dynamicTimesRiesCollection实现我想要的?
任何帮助都将不胜感激。
1条答案
按热度按时间j2datikz1#
我用电脑解决了我的问题
TimeSeriesCollection
而不是DynamicTimeSeriesCollection
正如垃圾神在评论中提到的。以java中的post实时图形为例。