【问题标题】:Dynamically building and updating Histograms with JFreeChart使用 JFreeChart 动态构建和更新直方图
【发布时间】:2010-03-13 18:49:36
【问题描述】:

我有一个输入数据流,我想使用一个简单的直方图进行绘制。我不知道值的范围,或用于直方图的正确分辨率或 bin 宽度。

SimpleHistogramDataset 提供了一些这样的功能,但是如果新值没有被覆盖,我不想为了添加新的 bin 来处理捕获异常。此外,它不容易让我使用不同的 bin 宽度(可能是某个初始设置宽度的整数倍)重建直方图。

是否有一种简单的方法可以使用 JFreeChart 或其他图表库来完成此任务,还是我必须在这里编写自己的类?

【问题讨论】:

  • 我不知道直方图,但是对于所有其他 jfreechart 图表,您只需输入 domainAxis.setAutoRange(true) 并在触发 DatasetChangedEvent 时自动调整轴。
  • 这将确保显示所有垃圾箱。我想即时增加/减少垃圾箱的大小。

标签: java jfreechart histogram


【解决方案1】:

在我看来,您有一个经典的 MVC 场景。您的图表就是视图,您的控制器将根据您的模型协调重建此视图。

因此,您应该构建模型以反映传入的数据,控制器将基于此重新生成图表。因此,控制器可以根据新需求确定是修改现有图表还是完全重建它。图表实现(视图)本身不适合保存动态变化的数据结构。

【讨论】:

    【解决方案2】:

    在调用addObservation() 之前,您必须验证该值是否适合某个bin;相应地使用addBin()。重新绘制图表时,bin 将自动调整大小以填充绘图区域。如果这不是所需的行为,则可以扩展相应的 XYBarRenderer。如果您必须删除垃圾箱,则必须使用removeAllBins()。这让Brian Agnew'sMVC suggestion 更有说服力。

    作为参考,这个example显示了动态添加XY系列的效果。它可以让您了解更新是如何发生的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-25
      • 2011-01-13
      • 1970-01-01
      • 1970-01-01
      • 2017-03-02
      • 1970-01-01
      • 2011-08-02
      • 2013-08-08
      相关资源
      最近更新 更多