Je suis en train de travailler sur une force dirigée graphique D3. Je tiens à souligner le passage de la souris avais nœud, ses liens et ses nœuds enfants en définissant tous les autres nœuds et de liens à une diminution de l'opacité.
Dans cet exemple, http://jsfiddle.net/xReHA/, je suis en mesure de la fermeture de tous les liens et de nœuds puis fondu dans les liens utiles, mais, jusqu'à présent, je n'ai pas pu élégamment fondu dans les nœuds connectés qui sont des enfants de la mouseover avais nœud.
C'est la clé de la fonction dans le code:
function fade(opacity) {
return function(d, i) {
//fade all elements
svg.selectAll("circle, line").style("opacity", opacity);
var associated_links = svg.selectAll("line").filter(function(d) {
return d.source.index == i || d.target.index == i;
}).each(function(dLink, iLink) {
//unfade links and nodes connected to the current node
d3.select(this).style("opacity", 1);
//THE FOLLOWING CAUSES: Uncaught TypeError: Cannot call method 'setProperty' of undefined
d3.select(dLink.source).style("opacity", 1);
d3.select(dLink.target).style("opacity", 1);
});
};
}
Je suis un Uncaught TypeError: Cannot call method 'setProperty' of undefined
d'erreur lorsque je tente de régler l'opacité sur un élément que j'ai chargé à partir de la source.cible. J'imagine que ce n'est pas la bonne façon de charger ce nœud comme un d3 objet, mais je ne peux pas trouver un autre moyen de le charger sans itération sur tous les nœuds de nouveau pour trouver ceux qui correspondent à la cible du lien ou de la source. Pour conserver les performances raisonnables, je ne veux pas itérer sur tous les nœuds de plus que nécessaire.
J'ai pris l'exemple de la décoloration des liens à partir de la http://mbostock.github.com/d3/ex/chord.html:
Toutefois, cela ne veut pas montrer comment modifier l'enfant en lien avec les nœuds.
Toutes les bonnes suggestions sur la façon de résoudre ou d'améliorer ce sera furieusement upvoted :)