Reputation: 615
I'm using highcharts stacked and group column to make the following graph:
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
Upvotes: 5
Views: 4168
Reputation: 14995
You can link multiple series into one legend item for hiding and showing and what not using the linkedTo property in the series -
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
}]
Upvotes: 3
Reputation: 45079
Here you can find example, how to use legendItemClick
to connect two series into one legend item: http://jsfiddle.net/5m9JW/326/
Upvotes: 0
Reputation: 427
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'
}
]
Upvotes: 1