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

时间:2012-05-12 15:32:27

标签: java charts jfreechart google-visualization javafx

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

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

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

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

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

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

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

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

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

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

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

    谢谢,

5 个答案:

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

答案 1 :(得分:4)

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

答案 2 :(得分:3)

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

答案 3 :(得分:1)

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

答案 4 :(得分:0)

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

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

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

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