在最近的一个 Java 项目中,我们需要一个免费的基于 Java 的实时数据绘图实用程序。经过一番搜索,我们发现了这个工具,名为 科学图形工具包或 SGT 来自美国国家海洋和大气管理局。它看起来相当强大,但我们发现它的可配置性不是很好。或者至少配置不足以满足我们的需求。我们最终深入挖掘了 Java 代码,并对代码进行了逆向工程,并对其进行了全面更改,以使绘图工具的外观和行为符合我们希望的方式。当然,这扼杀了 NOAA 未来升级的任何机会。

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

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

有帮助吗?

解决方案

我已经成功使用 自由图表 在多个项目上。这是 非常 可配置。JFreeChart 是开源的,但他们收费 开发者指南. 。如果您正在做一些简单的事情,示例代码可能就足够了。除此之外,50 美元的开发者指南还是很划算的。

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

其他提示

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

实时图表 支持实时渲染。

我在用着 格拉尔 用于实时绘图。它是一个 LGPL Java 库。虽然它不如 JFreeChart 强大,但它有更好的 API。我在很短的时间内就完成了一个计划并开始运行。他们还提供了一个实时绘图示例。

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

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

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

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

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

绘图4j 还支持实时绘图!

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

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

我用过 自由图表 在一个相当复杂的应用程序中,需要可视化数据流和基于数据的计算。我们实现了通过鼠标可视化编辑数据图的功能,并拥有大量数据点。JFreeChart 处理得很好。

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

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

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

JHandles 是 Octave(数学包)的替代图形包。它可能值得研究,但特定于 Octave 可能无法满足您的需求。

-亚当

点图可能是一个不错的选择。旧称托勒密。

jcckit 可以处理实时绘图。不过用起来还是很熊的。

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

https://bitbucket.org/hughperkins/easyjcckit

您可能想查看 JMathPlot

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top