如何在高图中一秒钟绘制500点?

时间:2013-11-21 08:56:25

标签: asp.net-mvc-3 wcf jquery highcharts highstock

我们应该从ajax请求每秒绘制500点,我们从WCF服务(托管在亚马逊云中)获取它。 我们正在使用高图,但它非常慢。

有什么解决方案吗?或者我们可以在我们的案例中使用它的任何其他图形控件,以便执行高效

var chart = new Highcharts.Chart({
            chart: {
                type: 'spline',
                animation: false,//Highcharts.svg, // don't animate in old IE
                marginRight: 10,
                renderTo: 'Chart',
                events: {
                    load: function () {


                    }
                }
            },
            title: {
                text: 'Data'
            },
            xAxis: {
                type: 'datetime',
                tickPixelInterval: 150,
                max: ((new Date()).getTime()) + 50 * 10000
            },

            yAxis: {
                title: {
                    text: 'Data',
                    min: 50,
                    max: 500
                },
                plotLines: [{
                    value: 0,
                    width: 1,
                    color: '#FFFF00'

                }]
            },
            plotOptions: {
                line: {
                    marker: {
                        enabled: false
                    }
                }
            },
            tooltip: {

            },
            legend: {
                enabled: false
            },
            exporting: {
                enabled: false
            },
            plotOptions: {
                series: {

                    marker: {
                        enabled: false
                    }
                }
            },

            series: [{
                name: 'Chart',

                color: '#335de8',

                //data: []
                data: (function () {
                    //generate an array of random data
                    var data = [];
                    var data = [],
                                    time = (new Date()).getTime(), i;
                    for (i = 1; i <= 0; i++) {
                        data.push({
                            x: time + i * 1000,
                            y: null
                        });
                    }

                    return data;

                })()
            }]

        });

        chart.yAxis[0].setExtremes(-200, 500);

           UpdateChart();

        function UpdateChart() {
        var Chrt = chart.series[0];
         setInterval(function () {
                $.ajax({
                    url: 'getChartData/',
                    cache: false,
                    type: "POST",
                    success: function (result) {
          for (var tmpJ = 0; tmpJ < result.length; tmpJ++) {

         Chrt.addPoint([(new Date()).getTime(), eval(result[tmpJ])], true, false);
                                 Chrt.redraw(false);
         }
       });
        }, 1000);
}

1 个答案:

答案 0 :(得分:0)

尝试替换此行

Chrt.addPoint([(new Date()).getTime(), eval(result[tmpJ])], true, false);

 if(tmpJ==result.length-1){
        Chrt.addPoint([(new Date()).getTime(), eval(result[tmpJ])], false, false);
 } else {
        Chrt.addPoint([(new Date()).getTime(), eval(result[tmpJ])], true, false);
 }