D3.js 逐渐改变显示为svg文本的数字,并进行D3转换
我正在寻找一种简单的方法,用d3逐渐改变显示为svg文本的数字的值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)
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、 凯利:原来的海报回答了这个问题。有没有办法把它和格式结合起来,在数字上加逗号?