Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I include two data in one series on HIGHCHARTS?

Tags:

highcharts

I'm using highcharts stacked and group column to make the following graph:

IMAGE

I haven't been able to get it working, I have the following code:

$(function () {
    var chart;
    $(document).ready(function() {
        chart = new Highcharts.Chart({
            chart: {
                renderTo: 'container',
                type: 'column'
            },
            title: {
                text: 'Types of answer'
            },
            subtitle: {
                text: 'SORT BY: Ages'
            },
            xAxis: {
                categories: ['First Test','Second Test','Third Test']
            },
            yAxis: {
                min: 0,
                title: {
                    text: 'Numero de pacientes'
                },
                stackLabels: {
                    enabled: true,
                    style: {
                        fontWeight: 'bold',
                        color: (Highcharts.theme && Highcharts.theme.textColor) || 'gray'
                    }
                }
            },
            legend: {
                layout: 'vertical',
                align: 'right',
                verticalAlign: 'top',
                x: -150,
                y: -13,
                floating: true,
                backgroundColor: (Highcharts.theme && Highcharts.theme.legendBackgroundColorSolid) || 'white',
                borderColor: '#CCC',
                borderWidth: 1,
                shadow: false
            },
            tooltip: {
                formatter: function() {
                    return '<b>'+ this.x +'</b><br/>'+
                        this.series.name +': '+ this.y +'<br/>'+
                        'Total: '+ this.point.stackTotal;
                }
            },
            plotOptions: {
                column: {
                    stacking: 'normal',
                    dataLabels: {
                        enabled: true,
                        color: (Highcharts.theme && Highcharts.theme.dataLabelsColor) || 'white'
                    }
                }
            },
            series: [{
                name: 'Answer 1',
                data: [variable1, variable7, variable13],
                stack: 'Less than 18',
                data: [variable19, variable25, variable31],
                stack: 'More than 18'
            },{
                name: 'Answer 2',
                data: [variable2, variable8, variable14],
                stack: 'Less than 18',
                data: [variable20, variable26, variable32],
                stack: 'More than 18'
            },{
                name: 'Answer 3',
                data: [variable3, variable9, variable15],
                stack: 'Less than 18',
                data: [variable21, variable27, variable33],
                stack: 'More than 18'
            }]
        });
    });

});

I dont want to use another series because I dont want them to appear in the legend, I want the legend to only list

like image 457
joseagaleanoc Avatar asked Oct 05 '22 23:10

joseagaleanoc


2 Answers

You can link multiple series into one legend item for hiding and showing and what not using the linkedTo property in the series -

http://jsfiddle.net/gh/get/jquery/1.7.2/highslide-software/highcharts.com/tree/master/samples/highcharts/demo/arearange-line/

series: [{
    name: 'Temperature',
    data: averages,
    zIndex: 1,
    marker: {
        fillColor: 'white',
        lineWidth: 2,
        lineColor: Highcharts.getOptions().colors[0]
    }
}, {
    name: 'Range',
    data: ranges,
    type: 'arearange',
    lineWidth: 0,
    linkedTo: ':previous',
    color: Highcharts.getOptions().colors[0],
    fillOpacity: 0.3,
    zIndex: 0
}]
like image 143
PW Kad Avatar answered Oct 13 '22 11:10

PW Kad


You need to separate the stack groups in your series. You series should look similar to this:

series: [ {
            name: 'Answer 1',
            data: [variable1, variable7, variable13],
            stack: 'Less than 18'
        },
        {
            name: 'Answer 1',
            data: [variable19, variable25, variable31],
            stack: 'More than 18'
        },
        {
            name: 'Answer 2',
            data: [variable2, variable8, variable14],
            stack: 'Less than 18'
        },
        {
            name: 'Answer 2',
            data: [variable20, variable26, variable32],
            stack: 'More than 18'
        },
        {
            name: 'Answer 3',
            data: [variable3, variable9, variable15],
            stack: 'Less than 18'
        },
        {
            name: 'Answer 3',
            data: [variable21, variable27, variable33],
            stack: 'More than 18'
        }
        ]
like image 24
Eddie Avatar answered Oct 13 '22 11:10

Eddie