d3 supprimer des données à l'aide de la sortie
Je vous ai préparé un petit violon pour illustrer le problème ici
Je vais avoir un problème à l'aide de d3 de sortie de la fonction pour supprimer des éléments dans le dom.
Dire que j'ai un tableau de 10 éléments:
var data = [1 ,4, 5, 6, 24, 8, 12, 1, 1, 20]
Je utiliser ces données pour créer un simple graphique à barres horizontales à l'aide de d3
d3.selectAll('rect')
.data(data)
.enter()
.attr("class", "rectangle")
.attr("stroke", "black")
.attr("stroke-width","1px")
.attr("fill","none")
.attr("x", 0)
.attr("y", function(d, i) { return 25 * i; } )
.attr("width", function(d) { return 22 * d; } )
.attr("height", "20");
Maintenant, après un court délai, je voudrais tailler ma dataset donc tout ce que j'ai quitté
var truncatedData = [4,5]
d3.selectAll('rect')
.data(truncatedData )
.exit()
.transition()
.delay(3000)
.remove();
De données est supprimée avec succès, mais il montre encore les deux premiers éléments de 1,4 au lieu de 4,5.
Comment puis-je supprimer tous mais [4,5] dans le dom?
Vous devez vous connecter pour publier un commentaire.
Par défaut, d3 correspond à des éléments donnés à
.data()
par leur index, et non de la valeur. Qui est, en lui donnant un tableau à deux éléments dans la deuxième appel signifie que les deux premiers éléments du premier appel (les indices 0 et 1) sont conservés.Pour résoudre ce problème dans votre cas, donner une fonction pour faire correspondre les éléments de la deuxième appel à
.data()
, c'est à direFixe jsfiddle ici.