我正在尝试使用我的程序中的拖动行为设置找到问题,因为看起来拖动甚至都不会激活。我正在使用http://jsfiddle.net/da37B/317/作为我程序的参考代码。
以下是相关代码:
vis.selectAll(".nodes")
.data(nodes)
.enter().append("circle")
.attr("class", "nodes")
.attr("cx", function (d) {
return xRange(d.x);
})
.attr("cy", function (d) {
return yRange(d.y);
})
.attr("r", "10px")
.attr("fill", "black")
.attr("transform", "translate(" + p.x + "," + p.y + ")")
.call(drag); <------
// Define drag beavior
var drag = d3.behavior.drag()
.on("drag", dragmove);
function dragmove(d) {
var x = d3.event.x;
var y = d3.event.y;
d3.select(this).attr("transform", "translate(" + x + "," + y + ")");
}
这是完整的代码:https://jsfiddle.net/4o5pch1q/1/
答案 0 :(得分:1)
您没有看到任何效果的原因是您的jsfiddle中有错误。请在未来检查控制台是否有明显的事情。
一旦修复了明显的错误(包括将In [48]: import numpy as np
In [49]: np.hstack((1, [2]))
Out[49]: array([1, 2])
的定义向上移动以便在使用之前定义它),唯一剩下的就是告诉D3如何获取被拖动元素的原点(否则圆圈在跳跃时“跳跃”):
¯\_(ツ)_/¯
完整演示here。