Highcharts Demo - Combination Stacked Bar + Spline Trend
author(s):
Torstein Hønsi
HTML
<script src="http://code.highcharts.com/highcharts.src.js"></script>
<div id="container" style="height: 400px"></div>
JavaScript
$(function() {
// Get two result sets, a list/array of single values
var data = [[144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4, 29.9, 71.5, 106.4, 129.2], // Mango Sales
[29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4]]; // Banana Sales
// Generate a trend by summing the two result sets, group by each single value
var trend = [];
for (var i = 0; i < data[0].length; i++) {
//DEBUG CHART COMBINED//alert( data[0][i] + ' / ' + data[1][i] );
trend.push(data[0][i] + data[1][i]);
}
//DEBUG CHART COMBINED//console.log( trend );
function updateTrendLine(chart) {
var newTrend = [];
for (var i = 0; i < trend.length; i++) {
newTrend.push(0);
} /* default values == 0 */
$(chart.series).each(function(i, e) {
if (e.type === 'column' && e.visible) { /* only visible columns */
$(e.data).each(function(ii, ee) {
newTrend[ii] = newTrend[ii] + ee.y; /* update trend */
});
}
});
chart.get('trend').setData(newTrend); /* set new data for line trend */
}
var chart = new Highcharts.Chart({
chart: {
renderTo: 'container',
type: 'column'
},
xAxis: {
categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
},
plotOptions: {
series: {
stacking: 'normal',
events: {
hide: function() {
updateTrendLine(this.chart);
},
show: function() {
updateTrendLine(this.chart);
}
}
}
},
tooltip: {
shared: true
},
series: [{
name: "Mango Sales",
data: data[0],
},
{
...