Comment puis-je traduire d3.js les nœuds?

J'ai un d3 force dirigée graphe qui contient un groupe de nœuds:

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);

Cela rend très bien.

Maintenant, j'aimerais traduire (déplacer) ces nœuds 200 pixels vers la droite quand je montre un détail div avec l'id detail_container.

J'ai essayé la suite, mais rien ne se passe pour les nœuds, quand je suis detail_container (autre que de montrer le détail div):

$('#detail_container').fadeIn('slow', function() {
    d3.selectAll("g.node").attr("transform", function(d) { return "translate(200, 0)"; });
});

La d3.selectAll("g.node") déclaration contient le nœud de données, je peux le confirmer en regardant les données dans la console:

console.log(d3.selectAll("g.node"));

Comme une autre approche, j'ai attaché le zoom/pan comportement à mon graphe:

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");

Cela fonctionne bien. Cependant, cette interagit avec la souris, pas avec les événements qui se produisent dans mon programme, donc, il y a un programmatique d'appeler le zoom/pan comportement, de sorte que je peux faire la traduction je veux?

OriginalL'auteur Alex Reynolds | 2012-04-11