我有一种方法可以根据fill
中绘制的一堆圆的提供数据更新d3
样式:
function updateFill(data) {
nodes.style("fill", function(d) {
var latest = data[d.id];
if (latest === 1) {
return "#000000";
} else if (latest === 2) {
return "#ffffff";
} else if (latest === 3) {
return "#d3d3d3";
} else {
// no data available, remove the current element/circle
}
}
}
我的问题是,我是否可以在最终的this.remove()
子句中执行else
(不返回任何内容)来删除d3
图表中的圆圈?或者,我是否需要先为圆圈设置颜色,然后在nodes.style(...)
之后使用某些选项将其删除,例如nodes.filter(function() {
return this.style.fill == '#someColor';
}).data([]).exit().remove();
?
这里的正确方法是什么?
答案 0 :(得分:2)
这不是处理数据的D3方式,但原则上删除这样的元素没有问题。也就是说,您应该能够从您发布的函数中运行d3.select(this).remove()
。
但我建议重构代码,以便使用通常的输入/更新/退出模式识别要删除的元素。