【发布时间】:2017-03-02 09:16:32
【问题描述】:
我正在使用以下代码更新使用 d3v4 创建的条形图:
d3.select("button.add")
.on("click", function(){
dataset.push(Math.floor(Math.random() * 30) + 5);
xScale.domain(d3.range(dataset.length))
.rangeRound([0, w])
.padding(0.2);
yScale.domain([0, d3.max(dataset)]);
var bars = svg.selectAll("rect")
.data(dataset);
bars.enter()
.append("rect")
.attr("class", "bar")
.attr("x", w)
.attr("y", function(d){return yScale(d);})
.attr("width", xScale.bandwidth())
.attr("height", function(d){return h - yScale(d)})
.attr("fill", function(d){
return 'rgb('+d*3 + ',' + d*6 + ',' + d*9 + ')';
});
bars.transition()
.delay(function(d, i){
return(i*1500) / dataset.length;
})
.duration(500)
.ease(d3.easeLinear)
.attr("x", function(d, i){ return xScale(i);})
.attr("y", function(d) {return yScale(d);})
.attr("width", xScale.bandwidth())
.attr("height", function(d) {return h - yScale(d);});
});
虽然添加了数据并创建了矩形元素,但数组中最新添加的元素不会发生转换。只有在添加了下一个元素并且该元素的转换没有发生时才会发生。
任何人都可以提供任何可能出现问题的提示吗?
提前谢谢..
【问题讨论】:
标签: javascript charts css-transitions d3.js