大量数据实时可视化

Large quantity of data real time visualization

本文关键字:可视化 实时 数据      更新时间:2023-09-26

我正在构建一个仪表板,从JSON格式的MQTT接收大量数据(数据频率±4Hz)。我试图将这些数据可视化,最初选择了Highcharts(http://www.highcharts.com/)但很快就意识到浏览器不能简单地处理那么多信息。

我对可视化如此大量的数据还很陌生,所以如果有关于如何处理这些数据的建议,我将不胜感激(目前arduino将数据发布到给定的主题,我会在服务器上接收它们,存储在mongo中,并发送到浏览器进行更新)。我的整个方法可能完全错误,所以请引导我走一条路!

您的问题可能是Highcharts创建的SVG太大,浏览器无法及时处理。如果你有太多的数据点,你需要做2件事中的1件。

  1. 切换到使用HTML5 Canvas而不是SVG 的图表库

  2. 使用最佳拟合或其他曲线插值缩小数据。

如果切换到基于Canvas的图表,您将失去SVG的一些很酷的功能,但每个数据点都会进入页面。我过去曾使用过jqChart。不过它不是免费的。

如果减少数据,并不是每个数据点都能进入页面,但SVG允许的良好功能仍然存在。你可能仍然可以使用高图表。

我认为您需要了解crossfilter(filtering-lib)、dc.js(d3和crossfilter-的辅助库)它们可以很好地处理大量数据

在使用Highcharts超过3年后,即使对于有疑问的用例,我也可以推荐它。如果你已经选择了Highcharts(经过与其他图表库的比较)并在其中投入了相当长的时间,那么按照建议使用其他图表库可能不是一个好选择。如果你喜欢,就坚持使用。

为了解决这个有数千个数据点的边缘案例,该团队宣布了boost.js模块。

它源于Github上的这个问题。讨论揭示了许多关于问题领域的背景信息。它还展示了Highcharts团队在客户/社区驱动的开发方面做得有多好。

如果你还想的话,你可以用Highcharts来做。:-)

最后但并非最不重要的是,我可以推荐Packt 的Highcharts食谱

我使用grafana来可视化我的时间序列数据。我认为它目前不支持mongodb。我使用influxdb作为数据后端。