之前有一个关于Java图表库的讨论,其中JFreeChart被认为是相当不错的选择,但是,正如其FAQ中所述,它并不适用于实时渲染。 有人能推荐一个支持实时渲染的类似库吗?只需要一些基本的xy渲染,例如从数据采集系统获取电压信号,并将其绘制出来(时间在x轴上,电压在y轴上)。
实际上FAQ所说的是JFreeChart不支持硬实时图表,这意味着当新数据到达或在确定性间隔后,图表不会更新。但是我发现JFreeChart可以用于您描述的应用程序。您可以实现每秒1次更新,这很好。我认为人眼无法跟随比这更快的东西。如果您想要更多,请勿使用Java(甚至其他语言)找到任何东西。我们使用的操作系统并非设计用于实时。您不能保证它们将在事件后以最小间隔响应。需要与硬件驱动程序进行紧密集成才能显示超过1-10帧每秒的内容。但是,如果您正确设计了应用程序,则操作系统将快速响应,并且您的应用程序可以轻松显示“实时”图形(即每秒更新一次的图形)。只是不要在紧急情况下使用您的应用程序关闭阀门!
您可能已经找到了一个好的解决方案,但如果没有,我最近对一个框架进行了一些工作,用于生成2D图表,允许以每秒50多次的速度进行实时更新。最初的目的是在网页的滚动区域中模仿图表记录器的外观,但我认为这种方法具有更广泛的应用。如果有人感兴趣,可以在Chart Recorder Demo上找到演示。外观由模板定义(www.journeylog.co.uk/chart/templates/chartRecorder.xml)。其中一个特点是能够指定在服务器上或使用ExplorerCanvas在浏览器中进行绘制。如果有人感兴趣,我可以开始一个开源项目。
如果必须使用Java,那么您可能需要了解以下内容: Java实时系统(包括实时和非实时演示以及图表应用的JavaFX版本) 使用多核系统开发实时Java应用程序 加速实时任务图形(该技术在Linux上运行,但可以在支持Java 5.0和Eclipse的任何平台上进行开发。) JavaFX-饼图演示
快到足以实时绘制的是swtchart,至少在我的经验中。即使有大量数据也不要被版本号吓到,是一个相当新的API,但我成功地使用它而没有问题。正如其名称所示,它基于SWT,该API使用本机操作系统绘图。此外,它还进行了一些聪明的优化,以实现快速绘图,例如不绘制数据集中的所有点(请参见大型系列示例片段)。