0

我使用一些数据按时间绘制圆圈,更新过程很好,但退出不起作用,这是我的部分代码:

function update(data) {

        var tmp1 = group.selectAll('.circle').data(data)
        tmp1.enter().append('circle')
                .attr('cx', function(d) {coords = projection([d.long,d.lat]); return  coords[0]})
                .attr('cy', function(d) {coords = projection([d.long,d.lat]); return  coords[1]})
                .attr('r',  function(d) { return countScale(d.count)})
                .attr("stroke", function(d, i) { return color(d.name, i);}) 
                .attr("stroke-width", 2.3)
                .style('fill', function(d) { 
                        if (d.count == 0){ return 'white';}
                        if (d.count !== 0){ return color(d.name);}
                    });
                tmp1.exit().remove();
}

之后我使用 setInterval 更新我的数据,但退出不起作用,前一个循环仍然退出。

setInterval(function() { update(nextDay(data)) }, 10);
4

1 回答 1

1

selectAll(".circle")正在通过类名“circle”进行选择,但是您随后会附加circle元素而不是设置类属性以匹配您的选择器。因此,您的退出选择将始终为空,因为没有匹配的元素。

您是不是要selectAll("circle")(没有前导.)按元素名称进行选择?

(此外,您可能需要一个关键功能并阅读有关一般更新模式的信息。)

于 2013-06-02T05:21:06.293 回答