簡體   English   中英

d3過渡先移除

[英]d3 transition remove first

如果我以刪除第一個元素的方式更新數據(例如,按半徑過濾列表中的第一個元素太小的半徑的列表),則我希望第一個元素縮小並保留其余兩個元素。 取而代之的是第三個縮水,第一個滑動到第二個位置,第二個滑動到第三個位置。 我做錯了什么?

用於渲染我的圈子的代碼是這樣的:

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/

問題在於數據匹配-默認情況下,D3根據索引進行匹配。 您是根據半徑進行過濾的,因此您可能要在半徑上進行匹配:

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

這里完整的例子。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM