问题 JavaFX 2.0可以作为科学图表包吗?


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

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

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

  2. 没有许多数据点的散点图必须包含错误条,或某种方式指示点中的错误。优选地,在X轴和Y轴上,例如以十字线形式。

对数刻度也是必须的,一个好的缩放工具和导出工具也会很好。 我更倾向于使用单个包可能的两个图表的解决方案。

从研究中我做了一个近乎完美的选择似乎是javaFX 2.0。 从我读到的,它具有良好的性能,也看起来很棒,但我似乎找不到错误栏的选项。由于我根本不了解javaFX,扩展图表库以包含错误栏是多么简单,或者是否有一个包含我未找到的开源添加?

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

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

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

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

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

谢谢,


9521
2018-05-12 15:32


起源



答案:


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是一个非常全面的图书馆,但你提到的还有其他选择)。积极和广泛的社区。
  • 缺点:我个人不喜欢外观和感觉 - 在某个阶段可能会过时,但显然不是明天。

8
2018-05-13 13:03



谢谢!我认为这是我正在寻找的答案。 JavaFX需要高度自定义才能作为科学图表库。 - user1391091


答案:


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是一个非常全面的图书馆,但你提到的还有其他选择)。积极和广泛的社区。
  • 缺点:我个人不喜欢外观和感觉 - 在某个阶段可能会过时,但显然不是明天。

8
2018-05-13 13:03



谢谢!我认为这是我正在寻找的答案。 JavaFX需要高度自定义才能作为科学图表库。 - user1391091


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


4
2018-05-13 00:49



还要考虑一下 org.jfree.chart.fx* “为JavaFX提供支持的软件包” JFreeChart“。 - trashgod


启用 JFreeChart的 和 奥森图表 (它是基于Java2D的)将在JavaFX中使用,我创建了一个新项目,它提供了由JavaFX Canvas支持的Graphics2D API。该项目是 FXGraphics2D 在GitHub上。它也可以用于其他Java2D库(代码是BSD风格的许可证)。


2
2018-05-20 09:09



谢谢大卫:-) - jewelsea


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


1
2017-07-29 11:05





最佳科学Java图表包由The MathWorks提供。运用 MATLAB Builder JA 允许您编写绘图代码,如果需要,可以在MATLAB中编写计算部分并将其转换为Java类。

有一个缺点。我最后一次使用该软件包时,没有选项可以在您的应用程序中包含绘图窗口。这些图总是显示在一个单独的窗口中。

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

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


0
2018-05-12 15:52



最初我正在研究的程序是在Matlab中,但不幸的是由于一致的“内存不足”错误和一般的包性能。您是否知道此解决方案中的性能是否成为问题? - user1391091
以1Hz刷新率显示超过10 ^ 5个数据点确实有效,没有任何性能问题。 “内存不足”错误通常可以通过调整JVM设置来解决。 - zellus