使用Vaadin的图表(最终使用HighCharts),我试图绘制一个超过10,000点的折线图。实际上,它的工作速度相当快(需要绘制几秒钟)。但是,我想知道它是否会更快,因为在使用JavaFx图表时遇到一个类似的问题,并且发现人们已经使用“ Ramer–Douglas–Peucker算法”实现了一种解决方案,以这种方式减少了数据点的数量。绘制时基本上是人眼可以看到的。 (以下是SO的原始答案:Performance issue with JavaFX LineChart with 65000 data points。)
那么,highcharts是否已经具有这种内置功能?如果没有,那么瓦丹吗?或者,是否需要在Vaadin中重新创建此逻辑,这意味着我最终需要为Ramer–Douglas–Peucker算法找到一个Java库。...
答案 0 :(得分:1)
不幸的是,Highcharts
没有内置“ Ramer–Douglas–Peucker算法”。但是,它具有一个 boost模块,该模块可以在几毫秒内渲染数千个点。
Boost模块允许WebGL渲染某些系列类型 而不是默认的SVG。这允许成千上万的数据 点数,以毫秒为单位。除了WebGL 渲染,它通过跳过处理和检查来节省时间 数据。
API参考:
演示:
此外,使用Highstock
,您可以使用 dataGrouping 。
数据分组是将数据值采样到更大的概念 块以简化可读性并提高 JavaScript图表。
API参考:
演示:
答案 1 :(得分:1)
对于大多数图表类型,当您是Vaadin图表时,应用算法来减少服务器端逻辑中的数据点数量实际上更有意义,例如,将数据从原始数据文件复制到图表中使用的DataSeries时。这不仅减少了渲染时间,还减少了将数据加载到浏览器的时间。
如果需要,我还建议将线性回归计算为服务器端的另外两点DataSeries。