Я динамически устанавливаю отметки через tickPositioner и подписываю через tags.formatter . При узкой ширине экрана мне нужно отображать меньше меток и меток, чтобы все подходило.
Я хочу получить ширину метки. Таким образом, я могу вычислить шаг.
https://jsfiddle.net/Lnbaqwce/
Highcharts.chart('container', {
chart: {
events: {
render() {
var ticks = this.xAxis[0].ticks,
ticksPositions = this.xAxis[0].tickPositions,
tick0x,
tick1x,
getPosition = function (tick) {
var axis = tick.axis;
return Highcharts.Tick.prototype.getPosition.call(tick, axis.horiz, tick.pos, axis.tickmarkOffset);
};
tick0x = getPosition(ticks[ticksPositions[0]]).x;
tick1x = getPosition(ticks[ticksPositions[1]]).x;
this.xAxis[0].labelGroup.translate((tick1x - tick0x) / 12)
}
}
},
xAxis: {
min: 0,
max: 20,
tickPositioner: function () {
var positions = [],
tick = Math.floor(this.dataMin),
increment = Math.ceil((this.dataMax - this.dataMin) / 6);
if (this.dataMax !== null && this.dataMin !== null) {
for (tick; tick - increment <= this.dataMax; tick += increment) {
positions.push(tick);
}
}
return positions;
},
labels: {
formatter: function() {
return this.value + "%$$$";
}
}
},
series: [{
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, 100.20, 200.30]
}]
});