我想通过使用以下代码点击该行来获取某一点上的点的坐标:
var lineData = [ { "x": 1, "y": 5}, { "x": 20, "y": 20},
{ "x": 40, "y": 10}, { "x": 60, "y": 40},
{ "x": 80, "y": 5}, { "x": 100, "y": 60}];
var lineFunction = d3.svg.line()
.x(function(d) { return d.x; })
.y(function(d) { return d.y; })
.interpolate("linear");
var svgContainer = d3.select("body").append("svg")
.attr("width", 200)
.attr("height", 200);
var lineGraph = svgContainer.append("path")
.data([lineData]).attr("d", lineFunction)
//.attr("d", lineFunction(lineData))
.attr("stroke", "blue")
.attr("stroke-width", 2)
.attr("fill", "none")
.on('mousedown', function(d) {
console.log({"x":d.x, "y":d.y})
});
(我更新了代码以解决注释,但我仍然得到“Object {x:undefined,y:undefined}”)
单击该行时,我一直收到“未定义”。我错过了一步吗?
答案 0 :(得分:6)
您可以使用d3.event
获取活动的坐标:
.on("mousedown", function() {
console.log({"x": d3.event.x, "y": d3.event.y});
});
答案 1 :(得分:3)
使用鼠标事件
.on('mousedown', function(d) {
var m = d3.mouse(this);
console.log("x:"+m[0]+" y:"+m[1]);
});
在函数m [0]中,m [1]给出X和Y.