2013-05-21 90 views
2

这是我用随机数据 http://jsfiddle.net/Fw4PZ/Highcharts - 更新图表用ajax

$(function() { 
    $(document).ready(function() { 
     Highcharts.setOptions({ 
      global: { 
       useUTC: false 
      } 
     }); 

     var chart; 
     chart = new Highcharts.Chart({ 
      chart: { 
       renderTo: 'container', 
       type: 'area', 
       marginRight: 10, 
       events: { 
        load: function() { 

         // set up the updating of the chart each second 
         var series = this.series[1]; 
         setInterval(function() { 
          var x = (new Date()).getTime(), // current time 
           y = Math.random(); 
          series.addPoint([x, y], true); 
         }, 1000); 
        } 
       } 
      }, 
      title: { 
       text: 'Live random data' 
      }, 
      xAxis: { 
       type: 'datetime', 
       tickPixelInterval: 150 
      }, 
      yAxis: { 
       title: { 
        text: 'Value' 
       }, 
       plotLines: [{ 
        value: 0, 
        width: 1, 
        color: '#808080' 
       }] 
      }, 
      tooltip: { 
       formatter: function() { 
         return '<b>'+ this.series.name +'</b><br/>'+ 
         Highcharts.dateFormat('%Y-%m-%d %H:%M:%S', this.x) +'<br/>'+ 
         Highcharts.numberFormat(this.y, 2); 
       } 
      }, 
      legend: { 
       enabled: false 
      }, 
      exporting: { 
       enabled: false 
      }, 
      series: [{ 
       name: 'Random data', 
       data: [] 
      },{ 
       name: 'Random data', 
       type: 'spline', 
       data: [] 
      }] 
     }); 
    }); 

}); 

如何更新每个系列样品图,不仅[1]?

   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.random(); 
         series.addPoint([x, y], true); 
        }, 1000); 

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

不工作...

和2东西......如何使用AJAX来更新这些系列? (我需要有2个区域和4个样条)

UPDATE 所以我改变了

 events: { 
      load: function() { 

       // set up the updating of the chart each second 
       var series = this.series; 
       setInterval(function() { 
        var x = (new Date()).getTime(), // current time 
         y = Math.random(); 

        series[0].addPoint([x, y], false); 
        series[1].addPoint([x, y], false); 
        series[2].addPoint([x, y], false); 
        series[3].addPoint([x, y], false); 
        series[4].addPoint([x, y], false); 
        series[5].addPoint([x, y], true); 
       }, 5000); 
      } 
     } 

,但它崩溃我的浏览器:\ http://jsfiddle.net/2tmRB/1/(!注意与链接) 我做错了吗?

+0

但是我无法打开这个例子,因为所有的都被冻结了。看看例子:http://jsfiddle.net/Fw4PZ/3/,它工作正常。 –

回答

3

实施例:

var series = this.series; 
setInterval(function() { 
    var x = (new Date()).getTime(), // current time 
    y = Math.random(), 
    y1 = Math.random(); 
    series[0].addPoint([x, y], false); 
    series[1].addPoint([x, y1], true); 
}, 1000); 

直播例如:http://jsfiddle.net/Fw4PZ/1/

关于AJAX - 以防的setInterval调用一些的getJSON()或类似的东西,并使用addPoint()从响应于该图表中添加值(如在上面的例子)。

+0

DziękiPaweł,thxPaweł – breq

+0

我有更多系列的问题:(它崩溃了我的浏览器(请参阅主题) – breq

+0

您正在将分类轴('类别:[...]')与日期时间轴([timestamp,value])混合所以它试图显示所有时间戳的类别,直到1369142816260(示例),所以它挂起浏览器。使用或类别,或日期时间xAxis:http://jsfiddle.net/Zf26V/2/ –