绘制JS-扩展轨迹在看不到选项卡时的行为很奇怪
Plotly js - extendTraces behaves weird when tab is not visible
我一直在查看用于实时绘图的 plotly js 库。我找到了这个代码笔,它帮助我得到了一个简单的例子:
var plotDiv = document.getElementById('plotDiv');
var data = [{
x: [ new Date().getTime() / 1000 ],
y: [0]
}];
Plotly.plot(plotDiv, data, { title: 'Random Over Time'});
setInterval(function(){
var update = {
x: [[ new Date().getTime() / 1000 ]],
y: [[ Math.random() ]]
};
Plotly.extendTraces(plotDiv, update, [0], 20);
}, 100);
http://codepen.io/plotly/pen/LGEyyY?editors=001
它工作得很好——除了当你离开 codepen window 时它似乎会明显地降低采样率(或其他东西)。重现很容易:将图中的点数更改为例如20(extendTraces 函数的最后一个参数)并将超时更改为 100 毫秒。让图表充满点并切换到另一个选项卡 5 秒左右。当你返回时,很明显,由于下采样,点在一段时间内消失得更快。我还用正弦波做了一些测试,显示得更清楚。
我的问题是 - 是否可以改变或消除这种行为?数据以 1 秒的间隔发送,如果您可以使用 maxpoints=60 来显示最后一分钟的数据,那就太好了。
经进一步调查,似乎 Chrome 在选项卡不可见时未以 100 毫秒的间隔调用间隔函数。在这里更详细地讨论:Chrome: timeouts/interval suspended in background tabs?
我一直在查看用于实时绘图的 plotly js 库。我找到了这个代码笔,它帮助我得到了一个简单的例子:
var plotDiv = document.getElementById('plotDiv');
var data = [{
x: [ new Date().getTime() / 1000 ],
y: [0]
}];
Plotly.plot(plotDiv, data, { title: 'Random Over Time'});
setInterval(function(){
var update = {
x: [[ new Date().getTime() / 1000 ]],
y: [[ Math.random() ]]
};
Plotly.extendTraces(plotDiv, update, [0], 20);
}, 100);
http://codepen.io/plotly/pen/LGEyyY?editors=001
它工作得很好——除了当你离开 codepen window 时它似乎会明显地降低采样率(或其他东西)。重现很容易:将图中的点数更改为例如20(extendTraces 函数的最后一个参数)并将超时更改为 100 毫秒。让图表充满点并切换到另一个选项卡 5 秒左右。当你返回时,很明显,由于下采样,点在一段时间内消失得更快。我还用正弦波做了一些测试,显示得更清楚。
我的问题是 - 是否可以改变或消除这种行为?数据以 1 秒的间隔发送,如果您可以使用 maxpoints=60 来显示最后一分钟的数据,那就太好了。
经进一步调查,似乎 Chrome 在选项卡不可见时未以 100 毫秒的间隔调用间隔函数。在这里更详细地讨论:Chrome: timeouts/interval suspended in background tabs?