2013-07-09 43 views
0

使用Highstock系列的平均值,我有一個系列的時間戳/值highchart - 用於顯示期

不同rangeselectors(每小時,每天,每週,每月,...)或zoomX

我想要顯示所顯示時間段的平均值。現在

,我可以計算整個系列數據的平均值:

for (i = 0; i < chart.series[0].yData.length; i++) { 
total += chart.series[0].yData[i]; 
} 
seriesAvg = (total/chart.series[0].yData.length).toFixed(4); // fix decimal to 4 places 
$('#report1').html('<b>Average:</b>: '+ seriesAvg); 

如何計算僅在顯示數據點的平均值?並在縮放後自動刷新?

謝謝

回答

1

使用series.processedYDataseries.points

+0

我找不到preprocessedYData方法的詳細信息的最終結果? – ThomasP

+0

對不起,應該處理好數據,對不起。這不是API的一部分,但是這個數組包含所有的y值。 –

+0

處理過的數據只包含**顯示的**點或所有系列點?我嘗試了以下:var seriesMin = Math.min.apply(null,objHighStockchart.series [0] .processedyData);但這不起作用(未定義)? – ThomasP

-1

我實現了這一點,但我注意到processedYdata也加載了一個數據比在屏幕上顯示的更多。

出於這個原因,我增加一個額外的命令刪除第一processedYData:

processedYData.splice(0, 1); 
下面

是功能

function showStat(objHighStockchart) { 

    for (j = 0; j < (json_data.length); j++) { 
     var seriesAvg = 0, 
      processedYData = objHighStockchart.series[j].processedYData; 
      processedYData.splice(0, 1); 
     var seriesMin = Math.min.apply(null, processedYData); 
     var seriesMax = Math.max.apply(null, processedYData); 
     var i = 0 
     var total = 0; 
     console.log(processedYData); 
     for (i = 1; i < processedYData.length; i++) { 
      total += processedYData[i]; 
     } 
     seriesAvg = (total/processedYData.length).toFixed(2); // fix decimal to 4 places 

     $('#container_stat' + j).html(
      '<br>Statistics for ' + objHighStockchart.series[j].name + '<br>' + 
      'Total: ' + total + ' logs<br>' + 
      'Min: ' + seriesMin + ' logs<br>' + 
      'Avg: ' + seriesAvg + ' logs<br>' + 
      'Max: ' + seriesMax + ' logs<br>' 
      + '---' + processedYData 
      ); 
    } 
}; 
+1

@Randika這是一個答案,而不是一個問題。 maerco如果你正在擴大另一個用戶的答案,你需要將其作爲對該答案的評論,而不是它自己的答案。一旦你得到更多的代表,你將能夠做到這一點。 – Newd