taco
taco

Reputation: 11

Getting graph coordinates from mouse in nvd3

I'm trying to see where in the chart the user clicked. The below code almost works but it is offset by some amount. I suspect I need to handle the click relative to the charting area and not take the axis into account. What is the proper way to do this?

d3.select('#chart1 svg')
  .datum(chartData)
  .on("click", mouseClick )
  .call(chart);
...

function mouseClick()
{
  var coordinates = d3.mouse(this);
  var x = chart.lines.xScale().invert(coordinates[0]);
  var y = chart.lines.yScale().invert(coordinates[1]);
  console.log(x+','+y);
}

Upvotes: 0

Views: 534

Answers (1)

taco
taco

Reputation: 11

You just have to subtract the margin:

function mouseClick()
{

  var coordinates = d3.mouse(this);
  var x = chart.lines.xScale().invert(coordinates[0]-chart.margin().left);
  var y = chart.lines.yScale().invert(coordinates[1]-chart.margin().top);
}

Upvotes: 1

Related Questions