这两种方法的优缺点是什么?什么控制条形物飞入的方向,例如从上到下或从左到右?为什么没有bar.exit()。remove()使用Option 2?
选项1 https://jsfiddle.net/2523onr3/ 选项2 https://jsfiddle.net/sjp700/2523onr3/3/
bar.exit().remove()
svg.selectAll(".bar").remove();
答案 0 :(得分:1)
这里有两种截然不同的方法。
第一个选项:
bar.exit().remove()
是一个正确的“退出”选择。这就是它的作用:
鉴于您的更新选择......
var bar = svg.selectAll(".bar")
.data(dataset, function(d) {
return d.label;
});
...您的退出选择会将数据与所选DOM元素进行比较。如果元素多于数据,则额外元素(即没有数据的元素)将填充此选择。然后,当您执行remove()
时,删除此选择中的元素。
在执行remove()
之前,您可以使用退出选择进行任何转换:向右,向左,向上移动,更改颜色,更改不透明度等等。因此,您控制“哪个条形图“飞行”,不仅在退出选择中,而且在输入和更新选择中也是如此。
另一方面,你的第二个选择......
svg.selectAll(".bar").remove();
...只需选择一个名为bar
的类(它可以是圆形,文本,矩形,五边形,无关紧要......)并删除该类的所有元素