D3.js 逐渐改变显示为svg文本的数字,并进行D3转换

D3.js 逐渐改变显示为svg文本的数字,并进行D3转换,d3.js,label,transition,D3.js,Label,Transition,我正在寻找一种简单的方法,用d3逐渐改变显示为svg文本的数字的值 var quality = [0.06, 14]; // qSVG is just the main svg element qSVG.selectAll(".txt") .data(quality) .enter() .append("text") .attr("class", "txt") .text(0) .transition() .duration(1750)

我正在寻找一种简单的方法,用d3逐渐改变显示为svg文本的数字的值

var quality = [0.06, 14];
// qSVG is just the main svg element

qSVG.selectAll(".txt")
    .data(quality)
    .enter()
    .append("text")
    .attr("class", "txt")
    .text(0)
    .transition()
    .duration(1750)
        .text(function(d){
             return d;
        });
由于本例中的文本是一个数字,我希望有一种简单的方法将其递增到转换的末尾

也许你们中的某个人有个想法


干杯

d3JS似乎已经提供了一个名为“tween”的合适函数

下面是代码示例的重要部分

 .tween("text", function(d) {
        var i = d3.interpolate(this.textContent, d),
            prec = (d + "").split("."),
            round = (prec.length > 1) ? Math.pow(10, prec[1].length) : 1;

        return function(t) {
            this.textContent = Math.round(i(t) * round) / round;
        };
    });​

您可以在给定的时间间隔内,从任意起始值到任意结束值递增它们,而不考虑它们的数字精度

它是为SVG文本实现的,但当然对标准html文本也是如此

如果您只需要整数的纯tween函数,那么它将获得更高的leightweight

 .tween("text", function(d) {
        var i = d3.interpolate(this.textContent, d),

        return function(t) {
            this.textContent = Math.round(i(t));
        };
    });​

@b、 凯利:原来的海报回答了这个问题。有没有办法把它和格式结合起来,在数字上加逗号?