Maybe too late, but this should be the function you need:
xAxis: {
categories: ['1', '2', '3', '4', '5'],
labels:{
step: 2 // displays every second category
}
}
In your case, you want to set the option at runtime, so:
if(chart.xAxis[0].names.length>12){
interval=parseInt(chart.xAxis[0].names.length/12);
chart.xAxis[0].update({labels:{step: interval}});
}
And there is also a option named tickInterval, which could be useful for this.