有没有像样的免费的Java数据绘图库?
在最近的一个Java项目中,我们需要一个免费的基于Java的实时数据绘图工具。 经过多次search,我们发现了这个名为Scientific Graphics Toolkit或者 NOAA的SGT工具 。 它看起来非常强大,但我们发现它不是非常可configuration的。 或者至less没有足够的configuration来满足我们的需求。 我们最终深入研究了Java代码,并对代码进行了逆向工程,并对代码进行了修改,使得绘图工具的外观和行为都符合我们希望的外观和行为。 当然,这会让将来从NOAA升级的任何机会。
那么您使用的是基于Java的免费或廉价的数据绘图工具或库?
跟进:感谢JFreeChart的build议。 我检查了他们的网站,它看起来像一个非常好的数据图表和绘图工具。 我应该在原来的问题中明确指出,我正在专门研究绘制实时数据。 我纠正了上面的问题,明确了这一点。 尽pipe如此 , JFreeChart对实时数据的支持似乎也是微乎其微的 。 还有其他的build议吗?
我已经在多个项目上使用JFreeChart成功了。 这是非常可configuration的。 JFreeChart是开源的,但他们收取开发指南 。 如果你正在做一些简单的事情,示例代码可能已经足够了。 否则,50美元的开发者指南是一个相当不错的交易。
关于“实时”数据,我也使用JFreeChart来处理这些types的应用程序。 不幸的是,我必须使用适当的同步机制来创build一些自定义数据模型,以避免竞争条件。 然而,这并不是非常困难,JFreeChart仍然是我的第一select。 但是,正如常见问题所示,如果这是一个大问题,JFreeChart可能不会给您提供最好的性能。
我碰到类似的问题(为了工程目的显示快速更新的数据),我正在使用JChart2D 。 这是非常简约的,有一些怪癖,但它似乎相当快:我正在运行一个基准速度testing,它将每秒2331点(333×7轨迹)添加到条形图,并在我的3GHz Pentium 4上使用1%的CPU。
Live Graph支持实时渲染。
我正在使用GRAL进行实时绘图。 这是一个LGPL Java库。 虽然它没有JFreeChart那么强大,但它有更好的API。 我在很短的时间内就开始了剧情。 他们还发布了一个实时绘图的例子。
当我searchjava的开源绘图库时,发现这个问题。 我对这里发布的答案并不满意,所以我对这个问题做了一些进一步的研究。 虽然这个问题已经在2008年发布了,但这对某个人来说可能还是很有趣的。
以下是Java中的开源图表和报表工具列表
http://autoplot.org/允许实时更新,并可用于创build多种types的科学情节。;
要更新绘图,请指定数据文件的URL,然后追加&filePollUpdates=1&tail=100
。 请参阅http://autoplot.org/cookbook#Loading_Data上的示例;
滑铁卢Scientific Graphics是一个新的LGPL项目。 数据对象是可观察的,可以在实时绘图场景中更新。 有关详细信息,请参阅http://waterloo.sourceforge.net/
几个截图:
Plot4j也支持实时绘图!
我在以前的项目中使用了JFreeChart( http://www.jfree.org/jfreechart/ )。 它具有一些非常好的内置function,并且devise是WAY可扩展的,所以如果你需要一些自定义的图表注释或者想要以不同的方式呈现一个轴,那么你以后可以随时推出自己的扩展。 这绝对值得一试。
检查ILOG的JViews – 他们有很多东西,可能适合您的需求。 所有这些都是非常可configuration和相当快。 虽然不是免费的。
我在一个相当复杂的应用程序中使用了JFreeChart ,它需要根据数据可视化数据stream和计算。 我们实现了通过鼠标可视化地编辑数据图的能力,并且具有非常大的一组数据点。 JFreeChart处理得很好。
不幸的是,我坚持使用v0.7,但是最新的版本在API清晰度方面非常好。 社区是非常有帮助的,开发人员也在回复邮件。
如果你正在做一个Web应用程序,不想打扰图书馆,你可以检查谷歌图表API 。 没有使用它自己,但我开始了一些非常有前途的testing。
对于实时绘图,您可以使用QN Plot,JOpenChart或其分叉Openchart2。
JHandles是Octave(一种math软件包)的替代graphics软件包。 这可能是值得研究的,但作为Octave具体可能没有你需要的东西。
-亚当
PtPlot可能是一个不错的select。 以前称为托勒密。
jcckit可以处理实时绘图。 这是一个熊虽然使用。
我分叉它,并做了一个非常简单的包装它非实时绘图。 底层复杂的界面也可以直接使用。
你可能想看看JMathPlot