11

我正在用 Java 编写一个包含 GUI 的科学实验控制程序。

我帮助为此任务选择图表库。该程序将包含两种类型的图表:

  1. 具有大量数据点的折线图(每个图在 10^4-10^5 点的范围内),刷新率约为每 0.5-1 秒一次,因此性能是一个因素。该图表必须包含具有不同缩放比例的数据点集。

  2. 没有许多数据点的散点图,必须包含误差线,或以某种方式指示点中的错误。最好同时在 X 和 Y 轴上,例如在十字准线样式中。

对数刻度也是必须的,一个好的缩放工具和导出工具也很好。我更愿意为这两个图表提供一个解决方案,其中包含一个可能的包。

从我所做的研究来看,一个近乎完美的选择似乎是 javaFX 2.0。从我阅读的内容来看,它具有良好的性能并且看起来也很棒,但我似乎无法找到错误栏的选项。由于我根本不了解 javaFX,因此扩展图表库以包含误差线有多简单,或者是否有一个开源插件包含我没有找到的这个?

另一种选择是谷歌图表库,它似乎具有所有必要的功能,但我担心在第一种图表类型中刷新率会出现问题。这是一个可行的问题吗?

我使用过 JFreeChart,但我担心性能,并且发现添加小的更改非常困难。其中包括一种在图表创建后在运行时更改绘制点颜色的方法,这在 matlab 中是可能的。所有这些都需要我试图避免的大量额外编码和时间消耗。

最后一个似乎最实用的选项是 JChart2D。它似乎具有我需要的大部分功能,而我唯一的问题是它看起来不太好。

有人对我有什么建议吗?我计划在尽可能短的时间内编写此代码,最坏的情况是我发现某些第三方软件包中的错误或我需要的选项不可用并且需要大量额外代码,尽管它会是很高兴学习新东西。

这个决定当然可能会影响我选择使用的整个 GUI 包,目前似乎是 Swing。

谢谢,

4

5 回答 5

8

Java FX 2.0 和 JFreeChart 没有可比性。JFreeChart 是 Swing 的图表库,它是 Java 中的 GUI 环境。而 Java FX 2.0 是 Swing 的替代品。Java FX 2.0 恰好提供了一些图表对象作为其标准库的一部分,但它们肯定不如 JFreeChart 中可用的那些灵活/可定制。当然,Java FX 2.0 在 Java 中,没有什么能阻止您通过扩展可用组件来编写您需要的非常具体的图表。

Java FX 2.0

  • 优点:比 Swing 更现代的外观和感觉(个人主观意见),可能会在几年内成为 Java 中的新 GUI 标准
  • 缺点:您将不得不花费更多时间来增强现有的图表组件,使用较少 = 支持较少 + 如果您遇到困难,社区较小

摇摆:

  • 优点:有很多可用的图表库(JFreeChart 是一个非常全面的库,但正如你提到的还有其他替代品)。活跃而广泛的社区。
  • 缺点:我个人不太喜欢它的外观和感觉——在某个阶段可能会过时,但显然不会在明天。
于 2012-05-13T13:03:46.867 回答
5

JFreeChart非常适合这些用途。因为它是开源的,所以很容易在上下文中进行测试;在这里FastScatterPlot讨论。在创建后更改绘图很简单,如下所示;和任意配色方案是可能的,如此处和此处所示

于 2012-05-13T00:49:51.097 回答
3

为了使JFreeChartOrson Charts(基于 Java2D)能够在 JavaFX 中使用,我创建了一个新项目,该项目提供由 JavaFX Canvas 支持的 Graphics2D API。该项目是GitHub 上的FXGraphics2D。它也可以用于其他 Java2D 库(代码在 BSD 样式许可下)。

于 2014-05-20T09:09:46.790 回答
1

您可以使用 Open Office 作为图表引擎,有一个 java/UNO 桥... JavaFX 很好,但图表不如 JFreeChart API 灵活,解决方案可能是在 FX patrick 中使用 JfreeCharts

于 2012-07-29T11:05:28.883 回答
0

The MathWorks 提供了最好的科学 Java 图表包。使用MATLAB Builder JA,您可以对绘图进行编码,如果需要,还可以在 MATLAB 中编写计算部分并将其转换为 Java 类。

有一个缺点。上次我使用这个包时,没有选项可以在你的应用程序中包含绘图窗口。绘图始终显示在单独的窗口中。

另一个值得关注的问题是该解决方案的价格。

matplolib是最接近 MATLAB 的竞争对手,但到目前为止还没有Jython实现。

于 2012-05-12T15:52:26.227 回答