2015-06-03 27 views
0

正如你所知道Highcharts自動地計算最大值和最小值爲Y軸,除非你專門設置類似yAxis: { min: 0, max: 100}Highcharts(highstock)反正檢測最大值一系列

但在我的情況下,我並不總是知道我的數據的最大值是什麼,我想將yAxis.max設置爲我的數據集中加載的最大值。

我現在想出的解決方法是從後端導出yMax,然後在前端使用setExtremes(0, yMax)來實現此目的。但是鑑於高圖的高性能和自動化特性,是否有可能僅從前端完成這一操作?

謝謝你們!

+0

你見過'getExtremes()'? http://api.highcharts.com/highstock#Axis.getExtremes – wf4

+0

yAxisOptions是基於在此highcharts.js功能getAxes陣列。你可以看看這個函數 – Sankara

+0

@ wf4我認爲'getExtremes()'只能獲取當前繪圖區域的極值,不是嗎?例如:http://jsfiddle.net/0djqzjhr/ – benjaminz

回答

1

這可以通過掃描你的events.load數據來完成:

events: { 
    load: function() { 
     var points = [] 
     this.series.forEach(function (entry) { 
      entry.data.forEach(function (theData) { 
       points.push(theData.y); 
      }); 
     }); 
     this.yAxis[0].update({ 
      max: Math.max.apply(Math, points) 
     }); 
    } 
} 

這是一個非常詳細的方式來做到這一點,你很可能崩潰的一些邏輯。你也需要確保你有數據檢查。

直播demo

+0

這就像一個魅力!雖然我不得不調整它一點點的工作:'entry.data'可能是'[]',我發現我的外部數據和YDATA分別存儲在'entry.xData'和'entry.yData'。 – benjaminz

+0

正確,您必須在'theData格式化您的支票。 '來匹配你的數據點格式。 – wergeld

相關問題