我有一个包含一组节点的 d3 力导向图:
var node = vis.selectAll("g.node")
.data(json.nodes)
.enter().append("svg:g")
.attr("class", "node")
.attr("id", function(d) { return "node" + d.index; })
.attr("transform", function(d) { return "translate(" + d.x + "," + d.y + ")"; })
.call(force.drag);
这渲染得很好。
div
当我显示带有 id的细节时,我现在想将这些节点向右平移(移动)200 像素detail_container
。
我尝试了以下操作,但显示时节点没有任何反应detail_container
(除了显示细节div
):
$('#detail_container').fadeIn('slow', function() {
d3.selectAll("g.node").attr("transform", function(d) { return "translate(200, 0)"; });
});
该d3.selectAll("g.node")
语句包含节点数据,我可以通过查看控制台中的数据来确认:
console.log(d3.selectAll("g.node"));
作为另一种方法,我将缩放/平移行为附加到我的图表中:
var vis = d3.select("#position")
.append("svg:svg")
.attr("width", w)
.attr("height", h)
.attr("pointer-events", "all")
.append("svg:g")
.call(d3.behavior.zoom().on("zoom", redraw))
.append("svg:g");
这工作正常。但是,这与鼠标交互,而不是与我的程序中发生的事件交互,所以是否有一种编程方式来调用缩放/平移行为,以便我可以完成我想要的翻译?