如果我以删除第一个元素的方式更新我的数据(例如,对于列表中的第一个元素过小的半径圆圈列表,我希望第一个元素缩小,剩下的两个元素为留下来。相反,第三个缩小,第一个滑到第二个位置,第二个滑入第三个位置。我做错了什么?
用于渲染我圈子的代码是:
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()
答案 0 :(得分:0)
问题是数据匹配 - 默认情况下,D3根据索引进行匹配。您正在根据半径进行过滤,因此您可能希望匹配:
circle = svg.selectAll('circle').data data, ((d) -> d.r)
完整示例here。