Я хочу реализовать xAxis с диапазоном значений в диаграмме областей в highchart.
Зоны должны быть интерактивными, и это должно фильтровать область на графике.






Чтобы добавить строку под диаграмму, вы можете использовать xAxis с соответствующими параметрами, но для добавления пользовательских меток вам нужно будет использовать Highcharts.SVGRenderer:
chart: {
...,
events: {
load: function() {
var ticks = this.xAxis[0].ticks,
customLabels = ['total: 13', 'Zone of Mediocrity', 'Stocks: 47', 'Good, not great', 'total: 13', 'Zone of "Greatness"'],
counter = 0,
xPos,
tickPos;
addEvents.call(this);
Highcharts.objectEach(ticks, function(el) {
if (tickPos) {
xPos = tickPos.x + (el.mark.getBBox().x - tickPos.x) / 2;
drawCustomLabel.call(
this,
customLabels[counter],
xPos,
tickPos.y + 10
);
drawCustomLabel.call(
this,
customLabels[counter + 1],
xPos,
tickPos.y + 30
);
counter += 2;
}
tickPos = el.mark.getBBox();
el.mark.attr({
translateY: 7.5
});
}, this);
}
}
}
Чтобы разделить серию диаграммы на несколько элементов, используйте zones. Событие click можно добавить следующим образом:
function addEvents() {
var series = this.series[0];
series['zone-area-0'].element.addEventListener('click', function() {
console.info('zone-area-0');
});
...
}
Живая демонстрация: http://jsfiddle.net/BlackLabel/e619th3c/
API:
https://api.highcharts.com/class-reference/Highcharts.SVGRenderer
https://api.highcharts.com/highcharts/series.areaspline.zones
https://api.highcharts.com/highcharts/xAxis.tickPositions
Привет, Vishu238, Вам нужно только добавить событие к отображаемым text элементам: jsfiddle.net/BlackLabel/82dxv03q
Спасибо за решение. Что делать, если я хочу получить событие, когда мы нажимаем метку xAxis Line («Хорошо, не отлично»)