【问题标题】:Drawing path trails between two points在两点之间绘制路径轨迹
【发布时间】:2015-11-18 04:53:40
【问题描述】:

D3 有没有一种简单的方法可以在过渡期间在两点之间绘制“轨迹”?

换句话说,我在散点图之间转换。当我进行过渡时,一组点被另一组替换,更新时带有补间。

如何在更新时在旧点和新点之间创建路径?有必要用stroke-dasharray吗?

【问题讨论】:

    标签: d3.js


    【解决方案1】:

    有趣的问题。我想这取决于您对“简单”的定义,但是您可以使用转换的 startend 事件以及自定义补间在转换开始时添加一行,随着转换的进行更新其端点,并删除过渡结束时。

    circle.transition().duration(2000)
      .attrTween("cx", function() {
        var start = d3.select(this).attr("cx"),
            i = d3.interpolate(start, 200)
        return function(t) {
            var current = i(t);
            svg.select("line.tmp").attr("x2", current);
            return current;
        }
      })
      .each("start", function() {
        svg.append("line").attr("class", "tmp")
            .attr("x1", d3.select(this).attr("cx"))
            .attr("y1", d3.select(this).attr("cy"))
            .attr("y2", d3.select(this).attr("cy"));
      })
      .each("end", function() {
        svg.select("line.tmp").remove();
      });
    

    完整的概念证明here。要使其适用于多个转换,您需要添加一些允许区分行的内容,例如基于数据绑定到相应点或保留显式引用的类。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-09
      相关资源
      最近更新 更多