如何在2天内创建带有实时日期轴的动态图表

fgw7neuy  于 2021-07-09  发布在  Java
关注(0)|答案(1)|浏览(345)

我正在用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实现我想要的?
任何帮助都将不胜感激。

j2datikz

j2datikz1#

我用电脑解决了我的问题 TimeSeriesCollection 而不是 DynamicTimeSeriesCollection 正如垃圾神在评论中提到的。以java中的post实时图形为例。

相关问题