JFreeChart - 如何在TimeSeries图表的X轴上实时显示并保留数据

时间:2016-02-28 20:23:29

标签: java real-time jfreechart

我是JFreeChart的新手。

我想更改the code of Trashgod以监控Java中的内容。所以我需要:

1 - 显示所有数据。他的代码只保留了最后10个样本。

2 - 在X轴上具有可变比例:

  • 有一个int输入howManyDays(或类似int输入的东西,有点聪明的东西会很棒;-)):int howManyDays = 7; //在这种情况下:1周的数据

  • 在X轴上具有可变比例有点复杂:例如,在执行的第一秒内,它具有1分钟的比例。然后10分钟...当午夜过去时,它应该打印当天。

我知道这条指令

      Timer timer = new Timer(100, new ActionListener()

表示每100毫秒添加一个新数据,然后更新图表。我将其更改为10 000 - > 10秒我的测试JFreeChart的计时器:

            Timer timer = new Timer(10000, new ActionListener() {
                private int i,data;
                @Override
                public void actionPerformed(ActionEvent e) {
                    if ((i%10)==0) {
                        this.data += (int) Math.ceil(2*Math.random());
                    }
                    this.i++;
                    chart.update(this.data);
                }
            });

当然,我不需要解决方案。

我真正需要什么:

  • 也许如果有人可以在Trashgod的代码上添加评论?
  • 或者,如果有人可以给我一些做这种代码的技巧?
  • 或许某人已经做过类似的事情?

祝你有个美好的一天!

1 个答案:

答案 0 :(得分:1)

虽然你的问题有点宽泛,但这里有一些关于接近这个任务的指示。

  • DynamicTimeSeriesCollection旨在仅保留最近的数据,而不是全部;请注意here如何填充时段。

  • 要保留所有数据,请按建议使用TimeSeries here;只有在您调用setMaximumItemAge()时才会删除旧项目。

  • 要格式化时间轴,请按建议使用setDateFormatOverride() here;当数据累积时,滴答单位会自动调整;除非你有某些特定的理由这样做,否则不要改变它们。

  • 要在后台收集数据,请使用SwingWorker,如图所示here