【问题标题】:Plotly: How to discard older points?Plotly:如何丢弃旧点?
【发布时间】:2017-08-18 14:52:46
【问题描述】:

TL;DR 我想用 Plotly.js 显示一个长期运行的条形图。我不知道如何丢弃旧积分。

详情

https://codepen.io/Michael-F-Ellis/pen/QvXPQr 我的 CodePen 的以下更新程序几乎可以满足我的需求。它显示了 2 个跟踪中的一组 20 个样本,这些跟踪以 500 毫秒的间隔连续更新。在演示结束时,它会绘制所有点以显示它们仍然存在。

var cnt = 0;
var interval = setInterval(function() {
  // Add next point to each trace
  Plotly.extendTraces('graph', {
    y: [[rand()], [rand()]]
  }, [0, 1])
  // Display only 20 most recent points
  Plotly.relayout('graph', { 'xaxis.range': [cnt-20, cnt]})

  cnt = cnt+1;
  if(cnt === 100) {
    // Before ending the run, show all points
    // to demonstrate they still exist in Plotly.
    Plotly.relayout('graph', { 'xaxis.range': [0, cnt]});
    clearInterval(interval);
  }
}, 500);

问题是我确实想删除旧点。真正的应用程序需要在内存有限的系统上永远运行。我正在寻找一个将删除最旧的 N 个跟踪点的 Plotly 调用。它需要相当高效,因为目标系统的性能也受到限制。

谢谢!

【问题讨论】:

    标签: javascript plotly


    【解决方案1】:

    https://codepen.io/Michael-F-Ellis/pen/YxeEwm

    从行为的角度来看,上述内容似乎可行。这是修改后的更新程序:

    Plotly.plot('graph', data);
    var cnt = 0;
    var max = 20;
    var interval = setInterval(function() {
      // Add next point to each trace
      Plotly.extendTraces('graph', {
        y: [[rand()], [rand()]]
      }, [0, 1])
      // Keep only 'max' most recent points
      if(cnt > max) {
        data[0].y.shift();
        data[1].y.shift();
      }
      cnt = cnt+1;
      if(cnt === 100) {
        // Before ending the run, show all points
        // to demonstrate that only 'max' points
        // still exist in Plotly.
        Plotly.relayout('graph', { 'xaxis.range': [0, cnt]});
        clearInterval(interval);
      }
    }, 500);
    

    解决方案是将数据对象保留在 Plotly 外部的 var 中,并使用 shift() 在添加新点时从数组开头删除旧点。

    我对另一种解决方案持开放态度,特别是如果这种方法存在已知的内存或性能问题。

    【讨论】:

    • 这正是我正在寻找的,谢谢。只是想知道您是否仍在积极使用它,是否遇到过任何性能/内存问题?
    • @JavierC.H.在 PC 或 OS X 系统上的 Chrome 下运行时,代码是稳定的。我在目标系统上仍然遇到问题,在 Raspbian Jessie 下的 Raspberry Pi 3 上的铬浏览器。几个小时后,铬最终达到 100% 的 CPU。
    • 太好了,希望这足以满足我的需求。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-27
    • 1970-01-01
    相关资源
    最近更新 更多