Displaying average of dataPoints on indexLabels in Bar Chart - CanvasJS JavaScript Charts

Displaying average of dataPoints on indexLabels in Bar Chart - CanvasJS JavaScript Charts

by mujahid_102

HTML

<script src="http://canvasjs.com/assets/script/canvasjs.min.js"></script>
<br/><!-- Just so that JSFiddle's Result label doesn't overlap the Chart -->
<div id="chartContainer" style="height: 360px; width: 100%;"></div>

JavaScript

var chart = new CanvasJS.Chart("chartContainer", {        
  title: {
    text: "Average of dataPoints"
  },
  data: [
    {
      type: "stackedColumn",
      indexLabel: "{y}",
      dataPoints: [
        { label: "Q1", y: 2 },
        { label: "Q2", y: 4 },
        { label: "Q3", y: 3 }
      ]
    },
    {
      type: "stackedColumn",
      indexLabel: "{y}",
      dataPoints: [
        { label: "Q1", y: 3 },
        { label: "Q2", y: null },
        { label: "Q3", y: 5 }
      ]
    }
  ]
});

updateLabels();
chart.render();

function updateLabels(){
	var sum, labels = [], dps = [];
  for(var j = 0; j < chart.options.data[1].dataPoints.length; j++){
    noOfDps = 0;
    sum = 0;
    for(var i = 0; i < chart.options.data.length; i++){
      if(chart.options.data[i].dataPoints[j].y){
        noOfDps++;
      }      
      sum += chart.options.data[i].dataPoints[j].y;      
    }
    chart.options.data[1].dataPoints[j].label = chart.options.data[1].dataPoints[j].label + " : " + (sum/noOfDps);
      if(chart.options.data[1].dataPoints[j].y === null){
      	chart.options.data[0].dataPoints[j].label = chart.options.data[0].dataPoints[j].label + " : " + (sum/noOfDps);
      }
  }  
}