Je suis encore un débutant avec javascript et d3. Je voulais calculer la valeur moyenne des coordonnées du noeud de disposition de la force d3 (souvenez-vous que ces nœuds sont flexibles, c'est-à-dire qu'ils peuvent être déplacés avec la souris). J'ai vu l'utilisation de .map
dans l'une des réponses et essayé de l'utiliser, mais il semble y avoir un problème. En ce moment, mon extrait de code ressemble à ceci:Calcul de la valeur moyenne des coordonnées du noeud de mise en forme d3
function tick() {
var positions = finalNodeSet.map(function(d) {
return [d.x, d.y];
});
var x1 = 0;
var y1 = 0;
for(var i=0; i<positions.length; i++){
x1+=positions[[i][0]];
y1+=positions[[i][1]];
}
Il semble que positions
est de type object
et il contient toutes les coordonnées de tous les nœuds avec chaque « tick ». Maintenant, ce que je voudrais, c'est stocker uniquement les valeurs finales des coordonnées et obtenir la valeur moyenne des coordonnées. Est-ce que quelqu'un pourrait m'aider avec ceci?
link.attr("x1", function (d) {
return d.source.x;
})
.attr("y1", function (d) {
return d.source.y;
})
.attr("x2", function (d) {
return d.target.x;
})
.attr("y2", function (d) {
return d.target.y;
});
node.each(collide(.5))
.attr("cx", function (d) {
return d.x;
})
.attr("cy", function (d) {
return d.y;
});
}
Aucune idée de ce qu'est 'finalNodeSet'. Pouvez-vous nous montrer le code que vous utilisez pour définir les positions des nœuds dans le gestionnaire 'tick'? –