2014-01-18 36 views
1

在高图中,我使用xAxys和yAxis属性格式化插入的数据。使用的代码是两个AXYS一样的,所以我只是其中的一个职位:Highcharts - 将系列稍后添加到绘图时添加Axys属性

$('#containers').highcharts({ 
.... 
.... 
yAxis: { 
     tickPositioner: function() { 
      var positions = [], 
       tick = Math.floor(this.dataMin), 
       increment = Math.ceil((this.dataMax - this.dataMin)/6); 

     for (; tick - increment <= this.dataMax; tick += increment) 
      { 
      positions.push(tick); 
      } 
       return positions; 
     } 
    }, 

    .... 

series: [] 


}); 

我已经声明series: []为空数组。我已经创建了一个数组,并与addSeries功能

之外,我把串联成积

var chart = $('#containers').highcharts(); 
     var data = [[[2,194.1],[3,95.6],[4,54.4],[5,29.9],[6,71.5], [7,106.4],[8,129.2],[9,144.0],[10,176.0],[11,135.6],[12,148.5], [13,216.4]],[294.1, 195.6, 154.4, 129.9, 171.5, 106.4, 229.2, 154.0, 276.0, 35.6, 48.5, 116.4]] 
      for(i in data){ 
       chart.addSeries({ 
       data: data[i] 
       }); 
      } 

此代码的工作很好,而我还没有操作超过这个数据,我可以直接申报它变成highcharts选项。如果我选择使用addSeries,即使我评论xAxysyAxys选项,它也不会起作用。

问题:如何在数据操作的情况下使用xAxys和yAxys属性?

这里是恢复我的代码小提琴:DEMO

回答

1

在初始图表负载没有数据的tickPositioner功能将成为无限循环(坠毁铬对我)。只是防止这种对初始加载:

tickPositioner: function() { 
    if (this.dataMax == null){ 
    return []; // prevents infinite loop... 
    } 

    var positions = [], 
     tick = Math.floor(this.dataMin), 
     increment = Math.ceil((this.dataMax - this.dataMin)/6); 
    for (; tick - increment <= this.dataMax; tick += increment) { 
     positions.push(tick); 
    } 
    return positions; 
} 

你也应该想想不重绘每addSeries

for (i in data) { 
    chart.addSeries({ 
     data: data[i] 
    }, false); // do not redraw after every series add 
} 
chart.redraw(); // redraw chart when done 

更新fiddle

+0

+1为'redraw()'。谢谢!有效! – alessandrob