【问题标题】:JFreeChart - How to show real-time on the X-Axis of a TimeSeries chart and keep datasJFreeChart - 如何在 TimeSeries 图表的 X 轴上实时显示并保存数据
【发布时间】:2016-02-28 20:23:29
【问题描述】:

我是 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 的代码添加评论?
  • 或者如果有人可以给我一些编写这种代码的技巧?
  • 或者也许有人已经做过类似的事情了?

祝你有美好的一天!

【问题讨论】:

    标签: java real-time jfreechart


    【解决方案1】:

    虽然您的问题有点宽泛,但这里有一些关于完成此类任务的提示。

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

    • 要保留所有数据,请按照建议使用TimeSeries here;仅当您调用 setMaximumItemAge() 时,才会删除老化的项目。

    • 要格式化时间轴,请按照建议使用setDateFormatOverride() here;刻度单位将随着数据的累积而自动调整;除非您有特定的理由,否则不要更改它们。

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

    【讨论】:

    • 谢谢!我会试试你的建议
    • 嗯...我使用数据库存储我的数据...所以我将使用 Eclipse 的插件:Birt
    • 要在 Eclipse 上实时单击脚本,然后单击 clientScripts。然后粘贴这个脚本:link 然后在外部浏览器中运行
    • 它适用于 birt 的初学者(在此视频中,最后的结果是一个表格,但您也可以使用 Birt 制作图表):您需要下载您的 jdbc 驱动程序,然后更新您的数据源。然后你可以创建你的查询并最终更新你的布局
    猜你喜欢
    • 2014-02-13
    • 2012-01-09
    • 1970-01-01
    • 2012-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-08
    • 2012-08-23
    相关资源
    最近更新 更多