使用JFreeChart动态构建和更新直方图

时间:2010-03-13 18:49:37

标签: java jfreechart histogram

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

SimpleHistogramDataset提供了一些此功能,但我不想处理捕获异常以便在未涵盖新值时添加新的bin。此外,它不容易让我使用不同的bin宽度重建直方图(可能是一些初始设置宽度的整数倍)。

使用JFreeChart或其他图表库是否有一种简单的方法可以实现此目的,或者我将不得不在这里编写自己的类?

2 个答案:

答案 0 :(得分:3)

听起来像你有一个经典的MVC场景。您的图表是视图,您的控制器将根据您的模型协调重建此视图。

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

答案 1 :(得分:2)

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

作为参考,此example显示了动态添加XY系列的效果。它可以让您了解更新的发生方式。