highcharts(或vaadin)是否具有使用像Ramer-Douglas-Peucker这样的算法的内置功能?

问题描述 投票:1回答:2

使用Vaadin的图表(最终使用HighCharts),我试图绘制一个超过10,000点的折线图。它实际上工作得相当快(几秒钟的情节)。但是,我想知道它是否会更快,因为我在使用JavaFx图表时遇到了类似的问题,并发现人们使用“Ramer-Douglas-Peucker算法”实现了一种解决方案,以这种方式减少数据点的数量它的图形在人眼看来基本上是显而易见的。 (这是SO的原始答案:Performance issue with JavaFX LineChart with 65000 data points)。

那么,highcharts是否已经拥有这样的内置功能?如果没有,Vaadin会吗?或者,我是否需要在Vaadin中重新创建此逻辑,这意味着我最终需要为Ramer-Douglas-Peucker算法找到一个Java库....

highcharts vaadin vaadin12
2个回答
1
投票

不幸的是,Highcharts内置了“Ramer-Douglas-Peucker算法”。但是,它有一个增强模块,可以在几毫秒内渲染数千个点。

Boost模块允许某些系列类型由WebGL而不是默认SVG呈现。这允许以毫秒为单位呈现数十万个数据点。除了WebGL渲染之外,它还可以通过尽可能跳过数据的处理和检查来节省时间。

API参考:

演示:


更重要的是,使用Highstock你可以使用dataGrouping。

数据分组是将数据值采样为更大块的概念,以便于读取并提高JavaScript图表的性能。

API参考:

演示:


1
投票

对于大多数图表类型,当您使用Vaadin图表时,实际上更有意义的是应用算法来减少服务器端逻辑中的数据点数量,例如将数据从原始数据文件复制到您在图表中使用的DataSeries时。这不仅缩短了渲染时间,还缩短了将数据加载到浏览器的时间。

如果需要这样的话,我还建议将线性回归计算为服务器端的附加两点DataSeries。

© www.soinside.com 2019 - 2024. All rights reserved.