【问题标题】:d3 transition remove firstd3 过渡先删除
【发布时间】:2014-10-01 19:50:24
【问题描述】:

如果我以删除第一个元素的方式更新我的数据(例如,按半径过滤圆列表,其中列表中的第一个太小)我希望第一个缩小,其余两个缩小留在原地。相反,第三个缩小了,第一个滑到第二个位置,第二个滑到第三个位置。我做错了什么?

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

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/

【问题讨论】:

    标签: javascript d3.js coffeescript


    【解决方案1】:

    问题在于数据匹配——默认情况下,D3 基于索引进行匹配。您正在根据半径进行过滤,因此您可能希望对此进行匹配:

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

    完整示例here

    【讨论】:

      猜你喜欢
      • 2019-01-02
      • 2012-07-07
      • 1970-01-01
      • 1970-01-01
      • 2023-03-11
      • 2018-10-19
      • 1970-01-01
      • 2013-07-19
      • 2014-07-14
      相关资源
      最近更新 更多