Highcharts(或vaadin)是否具有使用Ramer–Douglas–Peucker之类的算法的内置功能?

时间:2019-02-14 01:51:23

标签: highcharts vaadin vaadin12

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

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

2 个答案:

答案 0 :(得分:1)

不幸的是,Highcharts没有内置“ Ramer–Douglas–Peucker算法”。但是,它具有一个 boost模块,该模块可以在几毫秒内渲染数千个点。

  

Boost模块允许WebGL渲染某些系列类型   而不是默认的SVG。这允许成千上万的数据   点数,以毫秒为单位。除了WebGL   渲染,它通过跳过处理和检查来节省时间   数据。

API参考:

演示:


此外,使用Highstock,您可以使用 dataGrouping

  

数据分组是将数据值采样到更大的概念   块以简化可读性并提高   JavaScript图表。

API参考:

演示:

答案 1 :(得分:1)

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

如果需要,我还建议将线性回归计算为服务器端的另外两点DataSeries。