You should start by setting the margins for your chart, this will override some of the automatic calculations done by highcharts that make the xAxis reflow when you deselect a series. I did a simple jsfiddle trying to mimic your chart style above, see here: http://jsfiddle.net/p6bog3pa/
The Chart config object is:
Highcharts.chart('container', {
chart: {
type: 'column',
margin: [25, 15, 70, 400] // This fixes the chart margins
},
xAxis: {
categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
},
plotOptions: {
column: {
grouping: true
}
},
yAxis: [
{ title: { text: 'hello title' }},
{ title: { text: 'highcharts title' }},
{ title: { text: 'stuff title' }}],
series: [{
name: 'hello',
yAxis: 0,
data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4]
}, {
name: 'highcharts',
yAxis: 1,
data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4]
}, {
name: 'stuff',
yAxis: 2,
data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4]
}]
});
And since you have fixed margins, you can set fixed offsets for any component you wish to align with the chart x-axis. Of course, if you want to make it more dynamic, then there will be more work in your code to determine the appropriate margins, but this shouldn't be too difficult a task.