I am creating a highcharts chart series using the following logic:
this.series = [];
for(var i in headerData) {
var header = headerData[i];
this.series.push({
name: header.name,
data:[],
yAxis:parseInt(header.axis),
id: header.id,
type: 'column',
zIndex: 1,
events: {
mouseOver: function (e) {
console.log('Point: ', e.point);
}
}
});
}
I read that the point is a property of the event e
, but in my case e.point
is undefined
. I also cannot find anything in e
related to the moused-over point.
Does anybody know how to get the x- and y-values of the point that has been moused over?
You need to set the event
on the plotOptions
property. Here's an example taken from the Highcharts
API documentation:
$(function () {
var $reporting = $('#reporting');
$('#container').highcharts({
title: {
text: 'Mouse events demo'
},
subtitle: {
text: 'On point mouse over or mouse out, the values should be reported in top left'
},
plotOptions: {
series: {
point: {
events: {
mouseOver: function () {
var chart = this.series.chart;
if (!chart.lbl) {
chart.lbl = chart.renderer.label('')
.attr({
padding: 10,
r: 10,
fill: Highcharts.getOptions().colors[1]
})
.css({
color: '#FFFFFF'
})
.add();
}
chart.lbl
.show()
.attr({
text: 'x: ' + this.x + ', y: ' + this.y
});
}
}
},
events: {
mouseOut: function () {
if (this.chart.lbl) {
this.chart.lbl.hide();
}
}
}
}
},
tooltip: {
enabled: false
},
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]
}]
});
});
Demo
You can also use chart.hoverPoint
if trying to find out the currently moused over point from outside the mouseOver
event. However this is not on the documentation, which likely means it can change in the future.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With