海量数据实时可视化

Large quantity of data real time visualization

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

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

您的问题可能是 Highcharts 创建的 SVG 太大,浏览器无法及时处理。如果您的数据点太多,则需要执行 2 项操作中的 1 项。

  1. 切换到使用 HTML5 Canvas 而不是 SVG

  2. 的图表库
  3. 使用最佳拟合或其他一些曲线插值减少数据。

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

如果您减少数据,并不是每个数据点都会出现在页面上,但 SVG 允许的不错的功能仍然存在。您仍然可能会使用 highcharts。

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

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

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

为了用数千个数据点解决这个 edge-case,团队宣布 boost.js module

起源于this issue on Github。讨论揭示了有关问题域的大量背景信息。它展示了 Highcharts 团队在 customer-/community-driven 开发方面的表现。

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

最后但同样重要的是,我可以推荐 Highcharts Cookbook from Packt