Column Chart with Labels & axisX Interval - CanvasJS JavaScript Charts

Column Chart with Labels & axisX Interval - CanvasJS JavaScript Charts

by canvasjs

HTML

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

JavaScript

var dataSet = [{ x: 10, y: 71, position: "upperValue", label: "13-17" },
               { x: 20, y: 55, position: "upperValue", label: "18-24" },
               { x: 30, y: 55, position: "upperValue", label: "24-34" },
               { x: 40, y: 65, position: "upperValue", label: "35-44" },
               { x: 50, y: 95, position: "upperValue", label: "45-54" },
               { x: 10, y: 51, position: "lowerValue", label: "13-17" },
               { x: 20, y: 95, position: "lowerValue", label: "18-24" },
               { x: 30, y: 20, position: "lowerValue", label: "25-34" },
               { x: 40, y: 85, position: "lowerValue", label: "35-44" },
               { x: 50, y: 15, position: "lowerValue", label: "45-54" }];

   var chartGender = new CanvasJS.Chart("chartGender",{
     axisX: {
     	interval: 10
     },
     axisY: {
       labelFormatter: function(e) {
         if (e.value < 0)
           return label = -1 * e.value;
         else
           return label =  e.value;
       }
     },
     toolTip:{
       contentFormatter: function ( e ) {
         if( e.entries[0].dataPoint.y < 0)
           return e.entries[0].dataPoint.x + ": " + -1 * e.entries[0].dataPoint.y ;
         else
           return e.entries[0].dataPoint.x + ": " + e.entries[0].dataPoint.y ;
       }},
     data: [
       {
         type: "column",
         dataPoints: [ ]
       }
     ]
   });

   for( var i = 0; i < dataSet.length; i++ )
     if( dataSet[i].position === "lowerValue")
       chartGender.options.data[0].dataPoints.push({ x:dataSet[i].x, y: (-1 * dataSet[i].y), label: dataSet[i].label, color: "#3C6399"});
     else
       chartGender.options.data[0].dataPoints.push({ x:dataSet[i].x, y: (dataSet[i].y), label: dataSet[i].label, color: "#899BC0" });

  chartGender.render();