Вы можете сделать это с помощью xAxis.setExtremes
по вызову chart.events.load
. Простой пример (используя произвольный диапазон 1 год):
chart: {
events: {
load: function() {
this.xAxis[0].setExtremes(
Date.UTC(2013, 0, 1),
Date.UTC(2013, 11, 31)
);
}
}
},
Пример jsFiddle.
Если вам нужно определить, что означает ваш «средний», это может зависеть от вашего источника данных, где вы могли бы его предварительно вычислить, или вы могли бы сделать это также по вызову chart.events.load
.
Для удовольствия я добавил расчеты средней точки. Это использует moment.js, потому что это намного проще, чем перенос ваших собственных методов времени.
minX = data[0][0];
maxX = data[data.length - 1][0];
midX = minX + ((maxX - minX)/2);
var midDate = new Date(midX);
var startDate = moment(midDate);
var endDateMoment = moment(midDate);
startDate.subtract(1.5, 'months');
endDateMoment.add(1.5, 'months');
Обратите внимание, что я добавляю/вычитаю 1,5 месяца, чтобы сделать ваш 3-месячный селектор диапазона действительным. Библиотека moment.js обходится до двух месяцев. Вы понимаете эту идею. Так что ваш setExtremes
становится:
this.xAxis[0].setExtremes(
startDate.valueOf(), //.valueOf() in this context converts to javascript time
endDateMoment.valueOf()
);
И здесь живут jsFiddle.