Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在同一动态图(Highchart)中添加多行?_Javascript_Jquery_Canvas - Fatal编程技术网

Javascript 如何在同一动态图(Highchart)中添加多行?

Javascript 如何在同一动态图(Highchart)中添加多行?,javascript,jquery,canvas,Javascript,Jquery,Canvas,我遇到的问题是,我想在这个动态图表中添加一条额外的线(以后可能会更多),但只有一条线正在更新,也就是说,我想用Y轴上的不同随机数据更新两条不同的线 这是我写的代码,如果您想看到我的问题,请将此代码复制并粘贴到上面的链接中 $(function () { Highcharts.setOptions({ global : { useUTC : false } }); // Create the chart $

我遇到的问题是,我想在这个动态图表中添加一条额外的线(以后可能会更多),但只有一条线正在更新,也就是说,我想用Y轴上的不同随机数据更新两条不同的线

这是我写的代码,如果您想看到我的问题,请将此代码复制并粘贴到上面的链接中

$(function () {

    Highcharts.setOptions({
        global : {
            useUTC : false
        }
    });
    // Create the chart
    $('#container').highcharts('StockChart', {
        chart : {
            events : {
                load : function () {

                    // set up the updating of the chart each second
                    var series = this.series[0];
                    setInterval(function () {
                        var x = (new Date()).getTime(), // current time
                            y = Math.round(Math.random() * 100);
                        series.addPoint([x, y], true, true);
                    }, 1000);
                }
            }
        },

        rangeSelector: {
            buttons: [{
                count: 1,
                type: 'minute',
                text: '1M'
            }, {
                count: 5,
                type: 'minute',
                text: '5M'
            }, {
                type: 'all',
                text: 'All'
            }],
            inputEnabled: false,
            selected: 0
        },

        title : {
            text : 'Live random data'
        },

        exporting: {
            enabled: false
        },

        series : [{
            name : 'diagram1',
            data : (function () {
                // generate an array of random data
                var data1 = [], time = (new Date()).getTime(), i;

                for (i = -999; i <= 0; i += 1) {
                    data1.push([
                        time + i * 1000,
                        Math.round(Math.random() * 100)
                    ]);
                }
                return data1;
            }())
        },
        {
            name : 'diagram2',
            data : (function () {
                // generate an array of random data
                var data2 = [], time = (new Date()).getTime(), i;

                for (i = -999; i <= 0; i += 1) {
                    data2.push([
                        time + i * 1000,
                        Math.round(Math.random() * 100)
                    ]);
                }
                return data2;
            }())
        }]
    });

});
$(函数(){
Highcharts.setOptions({
全球:{
useUTC:false
}
});
//创建图表
$(“#容器”).highcharts('StockChart'{
图表:{
活动:{
加载:函数(){
//设置图表的每秒更新
var系列=本系列[0];
setInterval(函数(){
var x=(新日期()).getTime(),//当前时间
y=数学圆(数学随机()*100);
系列。添加点([x,y],真,真);
}, 1000);
}
}
},
范围选择器:{
按钮:[{
计数:1,
键入:“分钟”,
文字:“1M”
}, {
计数:5,
键入:“分钟”,
文字:“5M”
}, {
键入:“全部”,
文字:“全部”
}],
输入:错误,
已选:0
},
标题:{
文本:“实时随机数据”
},
出口:{
已启用:false
},
系列:[{
名称:“图1”,
数据:(函数(){
//生成一个随机数据数组
var data1=[],time=(new Date()).getTime(),i;

对于图表加载事件中的(i=-999;i),只需为第二个系列添加另一个间隔。 为了防止代码重复,您可以将所有数据存储在一个对象中并通过它进行迭代

这是

$(函数(){
Highcharts.setOptions({
全球:{
useUTC:false
}
});
//创建图表
$(“#容器”).highcharts('StockChart'{
图表:{
活动:{
加载:函数(){
//设置图表的每秒更新
var系列=本系列[0];
setInterval(函数(){
var x=(新日期()).getTime(),//当前时间
y=数学圆(数学随机()*100);
系列。添加点([x,y],真,真);
}, 1000);
/*第二系列更新代码*/
var series1=本系列[1];
setInterval(函数(){
var x=(新日期()).getTime(),//当前时间
y=数学圆(数学随机()*100);
系列1.添加点([x,y],真,真);
}, 1000);
}
}
},
范围选择器:{
按钮:[{
计数:1,
键入:“分钟”,
文字:“1M”
}, {
计数:5,
键入:“分钟”,
文字:“5M”
}, {
键入:“全部”,
文字:“全部”
}],
输入:错误,
已选:0
},
标题:{
文本:“实时随机数据”
},
出口:{
已启用:false
},
系列:[{
名称:“图1”,
数据:(函数(){
//生成一个随机数据数组
var data1=[],time=(new Date()).getTime(),i;
对于(i=-999;i您可以使用foreach

 $(function () {

    Highcharts.setOptions({
        global : {
            useUTC : false
        }
    });

    // Create the chart
    $('#container').highcharts('StockChart', {
        chart : {
            events : {
                load : function () {

                    // set up the updating of the chart each second
                    var series = this.series;
                    series.forEach(function(serie) {
                        setInterval(function () {
                        var x = (new Date()).getTime(), // current time
                            y = Math.round(Math.random() * 100);
                        serie.addPoint([x, y], true, true);
                    }, 1000);
                    });

                }
            }
        },

        rangeSelector: {
            buttons: [{
                count: 1,
                type: 'minute',
                text: '1M'
            }, {
                count: 5,
                type: 'minute',
                text: '5M'
            }, {
                type: 'all',
                text: 'All'
            }],
            inputEnabled: false,
            selected: 0
        },

        title : {
            text : 'Live random data'
        },

        exporting: {
            enabled: false
        },

        series : [{
            name : 'diagram1',
            data : (function () {
                // generate an array of random data
                var data1 = [], time = (new Date()).getTime(), i;

                for (i = -999; i <= 0; i += 1) {
                    data1.push([
                        time + i * 1000,
                        Math.round(Math.random() * 100)
                    ]);
                }
                return data1;
            }())
        },
        {
            name : 'diagram2',
            data : (function () {
                // generate an array of random data
                var data2 = [], time = (new Date()).getTime(), i;

                for (i = -999; i <= 0; i += 1) {
                    data2.push([
                        time + i * 500,
                        Math.round(Math.random() * 50)
                    ]);
                }
                return data2;
            }())
        }]
    });

});
$(函数(){
Highcharts.setOptions({
全球:{
useUTC:false
}
});
//创建图表
$(“#容器”).highcharts('StockChart'{
图表:{
活动:{
加载:函数(){
//设置图表的每秒更新
var系列=本系列;
系列。forEach(函数(系列){
setInterval(函数(){
var x=(新日期()).getTime(),//当前时间
y=数学圆(数学随机()*100);
系列添加点([x,y],真,真);
}, 1000);
});
}
}
},
范围选择器:{
按钮:[{
计数:1,
键入:“分钟”,
文字:“1M”
}, {
计数:5,
键入:“分钟”,
文字:“5M”
}, {
键入:“全部”,
文字:“全部”
}],
输入:错误,
已选:0
},
标题:{
文本:“实时随机数据”
},
出口:{
已启用:false
},
系列:[{
名称:“图1”,
数据:(函数(){
//生成一个随机数据数组
var data1=[],time=(new Date()).getTime(),i;

对于(i=-999;i这适用于我,现在我可以有两条动态线。是否有一种方法可以添加更多动态图表而无需重复设置间隔等,您可以看到下面的要点

        // set up the updating of the chart each second
        var series = this.series[0];
        setInterval(function () {
            var x = (new Date()).getTime(), // current time
                y = Math.round(Math.random() * 100);
            series.addPoint([x, y], true, true);
        }, 1000);

        /* second series update code */
        var series1 = this.series[1];
        setInterval(function () {
            var x = (new Date()).getTime(), // current time
                y = Math.round(Math.random() * 100);
            series1.addPoint([x, y], true, true);
        }, 1000);

        /* third series update code */
        var series2 = this.series[2];
        setInterval(function () {
            var x = (new Date()).getTime(), // current time
                y = Math.round(Math.random() * 100);
            series2.addPoint([x, y], true, true);
        }, 1000);

        /* fourth series update code */
        var series3 = this.series[3];
        setInterval(function () {
            var x = (new Date()).getTime(), // current time
                y = Math.round(Math.random() * 100);
            series3.addPoint([x, y], true, true);
        }, 1000);

这是一个好主意,但是如果我想要有不同的Y值呢?让我们假设我有两个不同的传感器。在你的系列中,你可以定义x,Y并在你的图表中使用serie.x,serie.Y等。或者定义一个函数,它给你x,Y和图表名。如果名称='diagram1',x=1,Y=2等。这是不正确的。如果你滚动到l
        // set up the updating of the chart each second
        var series = this.series[0];
        setInterval(function () {
            var x = (new Date()).getTime(), // current time
                y = Math.round(Math.random() * 100);
            series.addPoint([x, y], true, true);
        }, 1000);

        /* second series update code */
        var series1 = this.series[1];
        setInterval(function () {
            var x = (new Date()).getTime(), // current time
                y = Math.round(Math.random() * 100);
            series1.addPoint([x, y], true, true);
        }, 1000);

        /* third series update code */
        var series2 = this.series[2];
        setInterval(function () {
            var x = (new Date()).getTime(), // current time
                y = Math.round(Math.random() * 100);
            series2.addPoint([x, y], true, true);
        }, 1000);

        /* fourth series update code */
        var series3 = this.series[3];
        setInterval(function () {
            var x = (new Date()).getTime(), // current time
                y = Math.round(Math.random() * 100);
            series3.addPoint([x, y], true, true);
        }, 1000);