JavaScript Stacked Column Chart, also referred to as Vertical Stacked Bar Chart is formed by stacking multiple data-series, one on top of the other. Stacked Column Graphs show relation between individual values to the total sum. Charts are interactive, support animation, zooming, panning & exporting as image. Given example shows JavaScript Stacked Column Chart along with HTML source code that you can edit in-browser or save to run it locally.
window.onload = function () {
var chart = new CanvasJS.Chart("chartContainer", {
animationEnabled: true,
title:{
text: "Google - Consolidated Quarterly Revenue",
fontFamily: "arial black",
fontColor: "#695A42"
},
axisX: {
interval: 1,
intervalType: "year"
},
axisY:{
valueFormatString:"$#0bn",
gridColor: "#B6B1A8",
tickColor: "#B6B1A8"
},
toolTip: {
shared: true,
content: toolTipContent
},
data: [{
type: "stackedColumn",
showInLegend: true,
color: "#696661",
name: "Q1",
dataPoints: [
{ y: 6.75, x: new Date(2010,0) },
{ y: 8.57, x: new Date(2011,0) },
{ y: 10.64, x: new Date(2012,0) },
{ y: 13.97, x: new Date(2013,0) },
{ y: 15.42, x: new Date(2014,0) },
{ y: 17.26, x: new Date(2015,0) },
{ y: 20.26, x: new Date(2016,0) }
]
},
{
type: "stackedColumn",
showInLegend: true,
name: "Q2",
color: "#EDCA93",
dataPoints: [
{ y: 6.82, x: new Date(2010,0) },
{ y: 9.02, x: new Date(2011,0) },
{ y: 11.80, x: new Date(2012,0) },
{ y: 14.11, x: new Date(2013,0) },
{ y: 15.96, x: new Date(2014,0) },
{ y: 17.73, x: new Date(2015,0) },
{ y: 21.5, x: new Date(2016,0) }
]
},
{
type: "stackedColumn",
showInLegend: true,
name: "Q3",
color: "#695A42",
dataPoints: [
{ y: 7.28, x: new Date(2010,0) },
{ y: 9.72, x: new Date(2011,0) },
{ y: 13.30, x: new Date(2012,0) },
{ y: 14.9, x: new Date(2013,0) },
{ y: 18.10, x: new Date(2014,0) },
{ y: 18.68, x: new Date(2015,0) },
{ y: 22.45, x: new Date(2016,0) }
]
},
{
type: "stackedColumn",
showInLegend: true,
name: "Q4",
color: "#B6B1A8",
dataPoints: [
{ y: 8.44, x: new Date(2010,0) },
{ y: 10.58, x: new Date(2011,0) },
{ y: 14.41, x: new Date(2012,0) },
{ y: 16.86, x: new Date(2013,0) },
{ y: 10.64, x: new Date(2014,0) },
{ y: 21.32, x: new Date(2015,0) },
{ y: 26.06, x: new Date(2016,0) }
]
}]
});
chart.render();
function toolTipContent(e) {
var str = "";
var total = 0;
var str2, str3;
for (var i = 0; i < e.entries.length; i++){
var str1 = "<span style= \"color:"+e.entries[i].dataSeries.color + "\"> "+e.entries[i].dataSeries.name+"</span>: $<strong>"+e.entries[i].dataPoint.y+"</strong>bn<br/>";
total = e.entries[i].dataPoint.y + total;
str = str.concat(str1);
}
str2 = "<span style = \"color:DodgerBlue;\"><strong>"+(e.entries[0].dataPoint.x).getFullYear()+"</strong></span><br/>";
total = Math.round(total * 100) / 100;
str3 = "<span style = \"color:Tomato\">Total:</span><strong> $"+total+"</strong>bn<br/>";
return (str2.concat(str)).concat(str3);
}
}
You can enable legends by setting showInLegend to true. Legends increase the readability of the chart. Some other common customizations include setting color, dataPointWidth, etc.