В порядке от самого простого до самого сложного ...
Поскольку ваши категории в основном являются числовыми (например, 'mir001'), вы можете опустить категории, что помешает их отображению.Затем они будут показывать 1, 2, 3 и т. Д.
Кроме того, вы можете удалить категории и использовать средство форматирования меток .В этом случае вы могли бы сделать что-то вроде этого, снова воспользовавшись тем, что метки выглядят как числовые и увеличиваясь:
chart = new Highcharts.Chart({
xaxis: {
labels: {
formatter: function() {
return "mir" + this.value;
}
}
}
});
Оба вышеперечисленных уменьшат количество меток (метки будутследуйте некоторому шаблону, такому как 1, 50, 100, пока не увеличите масштаб.)
Если вы хотите быть очень внимательными к меткам, вам придется использовать форматировщик меток и выполнить некоторые математические операции, чтобы найти масштабграфик, чтобы определить, как должны отображаться метки.Вы могли бы, например, сделать что-то подобное, хотя это довольно запутанно:
var categories = [] //have your categories as a separate list
var buckets = 4;
var labelFormatter = function(frequency) {
var count = 0;
frequency = frequency || 0;
return function () {
count++;
if ((count > frequency) || (frequency < 1)) {
return this.value
}
}
};
chart = new Highcharts.Chart({
zoomtype: 'x',
events: {
selection: function(event) {
if (event.xAxis) {
var scale = event.xAxis[0];
var frequency = Math.floor((scale.max - scale.min) / buckets)
this.xaxis[0].labels.formatter = labelFormatter(frequency);
}
}
},
xaxis: {
labels: {
formatter: labelFormatter(Math.floor(categories.length/buckets))
}
}
});
Я должен отметить, что последнее решение не совсем работает, дополнительно иллюстрируя, насколько это сложно.