45

在最近的一个 Java 项目中,我们需要一个免费的基于 Java 的实时数据绘图实用程序。经过大量搜索,我们找到了来自 NOAA的名为Scientific Graphics Toolkit 或 SGT的工具。它看起来相当健壮,但我们发现它的可配置性并不高。或者至少没有足够的可配置性来满足我们的需求。我们最终深入挖掘了 Java 代码并对代码进行了逆向工程并对其进行了全面更改,以使绘图工具的外观和行为符合我们希望它的外观和行为方式。当然,这扼杀了 NOAA 未来升级的任何机会。

那么,您使用哪些免费或廉价的基于 Java 的数据绘图工具或库?

跟进:感谢JFreeChart的建议。我查看了他们的网站,它看起来是一个非常不错的数据图表和绘图实用程序。我应该在我最初的问题中明确表示我正在专门寻找绘制实时数据。我更正了我上面的问题,以明确这一点。不过,JFreeChart 对实时数据的支持似乎充其量是微不足道的。还有其他建议吗?

4

16 回答 16

18

我在多个项目中使用JFreeChart取得了成功。它是非常可配置的。JFreeChart 是开源的,但它们对开发者指南收费。如果您正在做一些简单的事情,那么示例代码可能就足够了。否则,50 美元的开发人员指南是非常划算的。

关于“实时”数据,我也将 JFreeChart 用于这类应用程序。不幸的是,我不得不创建一些具有适当同步机制的自定义数据模型以避免竞争条件。然而,这并不是很困难,而且 JFreeChart 仍然是我的首选。但是,正如常见问题解答所建议的那样,如果这是一个大问题,JFreeChart 可能不会为您提供最佳性能。

于 2008-08-09T06:23:19.140 回答
3

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

于 2009-05-14T14:09:08.453 回答
2

Live Graph支持实时渲染。

于 2009-02-17T08:33:32.873 回答
2

我正在使用GRAL进行实时绘图。这是一个 LGPL Java 库。尽管它不如 JFreeChart 强大,但它有一个更好的 API。我在很短的时间内完成了一个计划并开始运行。他们还发布了一个实时绘图示例。

于 2010-08-24T15:52:39.170 回答
2

当我在谷歌上搜索 Java 的开源绘图库时,我发现了这个问题。我对这里发布的答案不太满意,所以我对这个问题做了一些进一步的研究。尽管这个问题早在 2008 年就已发布,但这对某些人来说可能仍然很有趣。

这是Java 中的开源图表和报告工具列表

于 2012-01-07T13:05:11.960 回答
1

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

于 2010-08-23T14:19:14.747 回答
1

http://autoplot.org/允许实时更新,并可用于创建多种类型的科学绘图。

要更新绘图,请指定数据文件的 URL,然后附加&filePollUpdates=1&tail=100. 请参阅http://autoplot.org/cookbook#Loading_Data中的示例

于 2012-06-29T16:09:58.613 回答
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

于 2012-12-08T22:22:20.880 回答
0

我在以前的项目中使用了 JFreeChart ( http://www.jfree.org/jfreechart/ )。它具有一些非常好的内置功能,并且设计是可扩展的,因此如果您需要一些自定义图表注释或希望轴以不同方式呈现,或者其他什么,您可以随时滚动自己的扩展。绝对值得一试。

于 2008-08-09T05:52:00.340 回答
0

我在一个需要可视化数据流和基于数据的计算的相当复杂的应用程序中使用了JFreeChart 。我们实现了通过鼠标直观地编辑数据图的能力,并且拥有非常大的数据点集。JFreeChart 处理得很好。

不幸的是,我被 v0.7 卡住了,但在 API 清晰度方面,最新版本要好得多。社区非常有帮助,开发人员也在回复邮件。

如果您正在做一个网络应用程序并且不想打扰库,您可以查看Google Chart API。我自己没有使用它,但我开始了一些非常有希望的测试。

于 2008-08-09T07:41:29.310 回答
0

检查 ILOG 的JViews - 他们有很多东西,有些东西可能适合您的需要。所有这些都非常可配置且速度非常快。虽然不是免费的。

于 2008-10-11T19:43:33.413 回答
0

对于实时绘图,您可以使用 QN Plot、JOpenChart 或其分支 Openchart2。

于 2009-02-06T14:11:08.253 回答
0

JHandles 是 Octave 的替代图形包(一个数学包)。它可能值得研究,但特定于 Octave 可能没有你需要的东西。

-亚当

于 2009-02-06T14:38:21.380 回答
0

PtPlot 可能是一个不错的选择。以前称为托勒密。

于 2010-10-05T21:41:09.217 回答
0

jcckit 可以处理实时绘图。不过,这是一只熊。

我分叉了它,并围绕它做了一个非常简单的包装器,用于非实时绘图。底层复杂的接口也可以直接使用。

https://bitbucket.org/hughperkins/easyjcckit

于 2012-10-18T11:59:34.027 回答
-1

您可能想查看 JMathPlot

于 2009-12-10T14:35:50.363 回答