有没有一些不错的免费Java数据绘图库?

45
在最近一个Java项目中,我们需要一个免费的基于Java的实时数据绘图工具。经过长时间的搜索,我们发现了这个被称为NOAA(美国国家海洋和大气管理局)的科学图形工具包或SGT。它似乎非常强大,但我们发现它不够可配置,至少不能满足我们的需求。最终,我们深入挖掘了Java代码并对其进行反向工程和修改,使绘图工具看起来和操作起来符合我们的要求。当然,这杀死了未来从NOAA获得升级的任何机会。
那么你使用哪些免费或便宜的基于Java的数据绘图工具或库呢?
后续:感谢提供JFreeChart建议。我查看了他们的网站,它看起来是一个非常好的数据图表和绘图工具。我应该在我的原始问题中明确指出我特别是在寻找实时数据绘图。我已经更正了上面的问题,以清楚地表明这一点。虽然JFreeChart对于实时数据的支持至少是较小的,但还有其他建议吗?

我和你的情况一模一样。尝试过几次SGT,发现它不错但可配置性不够强。我也进行了深入挖掘,并且需要实时性能。由于你的问题是几年前提出的,到目前为止你有找到任何解决方案吗? - user978548
16个回答

18

我在多个项目中使用JFreeChart获得了成功。它非常可配置。JFreeChart是开源的,但他们会为开发者指南收费。如果您正在做一些简单的事情,示例代码可能足够了。否则,支付50美元购买开发者指南是一个非常划算的选择。

关于“实时”数据,我也使用过JFreeChart做这样的应用。不幸的是,我必须创建一些自定义数据模型并具有适当的同步机制以避免竞争条件。然而,这并不是很困难,并且JFreeChart仍然是我的首选。但是,正如常见问题解答所建议的那样,如果性能是一个重要问题,JFreeChart可能不能给您最佳的表现。


如果您的图表更新间隔为1秒或更长时间,JFreeChart足以用于实时数据显示。 - Abhinav Sarkar

3

我最近遇到了一个类似的问题(用于工程目的显示快速更新的数据),我正在使用JChart2D。它非常简约,有一些小问题,但似乎相当快:我正在运行基准速度测试,在条形图中添加2331个点每秒(333x7个轨迹),在我的3GHz Pentium 4上使用1%的CPU。


这个看起来对我很有前途。不过我没有时间真正尝试它。 - Kurt W. Leucht

2

我正在使用GRAL进行实时绘图,这是一个LGPL的Java库。虽然它没有JFreeChart强大,但其API更加友好。我很快就完成了一次绘图。他们还提供了一个实时绘图示例。


2

2
我在谷歌搜索Java开源绘图库时发现了这个问题。然而,我对这里发布的答案并不满意,因此我进一步研究了这个问题。虽然这个问题是2008年发布的,但对某些人可能仍然有趣。
以下是Java中开源的图表和报告工具列表。 (链接)

1

Waterloo Scientific Graphics是一个新的LGPL项目。数据对象是可观察的,并且可以在实时绘图场景中进行更新。 详情请参见http://waterloo.sourceforge.net/

一些屏幕截图:

http://waterloo.sourceforge.net/images/AnatomyZ.png

http://waterloo.sourceforge.net/images/contour.png

http://waterloo.sourceforge.net/images/errorbar.png


1
我编写的库Plot4j还支持实时绘图。

1

0

如果需要实时绘图,您可以使用QN Plot、JOpenChart或其分支Openchart2。


0
JHandles是Octave(一种数学软件包)的另一种图形包。它可能值得一试,但由于是Octave特定的,可能没有你需要的功能。
-亚当

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接