我创建了一个样条实时图表,希望在该图表上定期显示点。
每点都是一分钟后发生的事件。但是,我很难理解所有动静的部分:
我提到的highchart演示上的间隔函数每1秒更新一次,我将其设为6000。
javascript中的虚拟更新仅需要花费最新时间并将其追加,是否应该在其中引入一些延迟?
序列中的虚拟初始化数据有一个for循环,我也无法理解。我了解到javascript会产生UNIX时间戳及其毫秒操作,但是默认代码(再次从highchart演示中稍作修改)从-9999到0,并且是一个数字的倍数。
我想了解这些部分,并确保每次我的x轴“向右倾斜”时,我有一分钟的时间间隔,并且在图表上只有一个点。
PS:请原谅任何遗漏的括号,发布问题时可能会遗漏它们,但我向您保证这不是问题。
这是我的系列代码:
series: [{
type: 'spline',
name: 'Random data',
data: (function () {
// generate an array of random data
var data = [],
time = (new Date()).getTime(),
i;
for (i = -9999; i <= 0; i += 1) {
data.push([
time + i * 60000,
Math.round(Math.random() * 100) + 10
]);
}
return data;
}())
}]
这是我的图表代码:
chart: {
events: {
load: function () {
// Set up the updating
var series = this.series[0];
setInterval(function () {
var x = (new Date()).getTime(), // current time
y = Math.round(Math.random() * 100) + 10
series.addPoint([x, y], true, true);
}, 6000);
}
}
}
答案 0 :(得分:0)
关于您的问题:
如果要间隔1分钟,则需要使用60000
值(60 * 1000),6000
毫秒为6秒。
间隔函数中的当前日期每隔6000
毫秒,这导致数据每隔6000
毫秒出现间隔。
数据初始化取决于从当前时间戳中减去六秒的倍数:
data: (function() {
// generate an array of random data
var data = [],
time = (new Date()).getTime(),
i;
for (i = -9999; i <= 0; i += 1) {
if (i === -500) {
console.log(time, i, 60000); // 1560941909847 + (-500 * 60000)
console.log(time + i * 60000); // 1560911909847
} else if (i === -499) {
console.log(time, i, 60000); // 1560941909847 + (-499 * 60000)
console.log(time + i * 60000); // 1560911969847
} else if (i === 0) {
console.log(time, i, 60000); // 1560941909847 + (0 * 60000)
console.log(time + i * 60000); // 1560941909847 = actual time
}
data.push([
time + i * 60000,
Math.round(Math.random() * 100) + 10
]);
}
return data;
}())