Shadow/3D Effect for Stacked Column Chart - CanvasJS JavaScript Charts

Shadow/3D Effect for Stacked Column Chart - 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="chartContainer" style="height: 360px; width: 100%;"></div>

JavaScript

var chart = new CanvasJS.Chart("chartContainer",
{   
	title: {
   	text: "3D Effect on Columns"
  },     
	data: [
	{        
        type: "stackedColumn", 
        dataPoints: [
        { x: 10, y: 171 },
        { x: 20, y: 155},
        { x: 30, y: 150 },
        { x: 40, y: 165 },
        { x: 50, y: 195 },
        { x: 60, y: 168 },
        { x: 70, y: 128 },
        { x: 80, y: 134 },
        { x: 90, y: 114}
        ]
      },{        
        type: "stackedColumn",
        dataPoints: [
        { x: 10, y: 101 },
        { x: 20, y: 105},
        { x: 30, y: 100 },
        { x: 40, y: 105 },
        { x: 50, y: 105 },
        { x: 60, y: 108 },
        { x: 70, y: 108 },
        { x: 80, y: 104 },
        { x: 90, y: 104}
        ]
      }  
	]
});

chartRender(chart);

function chartRender(chart){
  chart.render();
  chart.ctx.shadowBlur = 8;
  chart.ctx.shadowOffsetX = 4;
  chart.ctx.shadowColor = "black";

  for (var i = 0; i < chart.plotInfo.plotTypes.length; i++) {
        var plotType = chart.plotInfo.plotTypes[i];
        for (var j = 0; j < plotType.plotUnits.length; j++) {
          var plotUnit = plotType.plotUnits[j];
          //For Stacked-Column Chart
          if (plotUnit.type === "stackedColumn"){
            chart.renderStackedColumn(plotUnit);
          }
          //For Stacked-Bar Chart
          else if (plotUnit.type === "stackedBar"){
            chart.renderStackedBar(plotUnit);
          }
        }
  }
  chart.ctx.shadowBlur = 0;
  chart.ctx.shadowOffsetX = 0;
  chart.ctx.shadowColor = "transparent";
}