2014-10-01 71 views
0

如果我以删除第一个元素的方式更新我的数据(例如,按列表中的第一个元素过滤列表中第一个元素的圆的列表太小),我希望第一个元素缩小,剩下的两个留下来。取而代之的是第三个缩小,第一个滑到第二个位置,第二个滑到第三个位置。我做错了什么?d3转换首先删除

用来渲染我的圈子的代码是这样的:

update = (data) -> 
    circle = svg.selectAll('circle').data data 

    circle.enter().append('circle') 
     .attr('r', 0) 

    circle 
     .transition().duration(250) 
     .attr('r', (d) -> d.r) 
     .attr('cx', (d) -> d.x) 
     .attr('cy', (d) -> d.y) 


    circle.exit() 
     .transition().duration(250) 
     .attr('r', 0) 
     .remove() 

小提琴: http://jsfiddle.net/ztf6spL8/

回答

0

的问题是数据匹配 - 默认情况下,D3匹配基于索引。你基于半径的过滤,所以你可能要匹配上:

circle = svg.selectAll('circle').data data, ((d) -> d.r) 

完整的示例here