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],
            },
            {
 ...