2012-07-06 162 views

回答

42

因为坐标系的原点是左上角的“Y”值在固定每个酒吧的顶部。如果'y'值是固定的,并且“高度”增加了,那么看起来棒条就会变长。为了让酒吧从底部成长,您需要同时转换'y'和'高度'。

这应该是你在找什么,我只改变了两行。

chart.selectAll("rect") 
.data(data) 
.enter().append("rect") 
.attr("x", function(d, i) { return x(i) - .5; }) 
.attr("y", function(d) { return h - .5; })     //new---- 
.attr("width", w) 
.transition().delay(function (d,i){ return i * 300;}) 
.duration(300) 
.attr("height", function(d) { return y(d.value); }) 
.attr("y", function(d) { return h - y(d.value) - .5; }); //new----- 

我已经开始在图表底部的'y'值(h - 0.5)。然后当你转换时,你增加'高度'(y(d.value))并且以相同的速度减小'y'(h-y(d.value))。这具有将杆的底部固定到轴的效果。

希望这会有所帮助!

+0

非常感谢,非常完美 – 2012-07-06 16:28:25

+1

我是有一些版本问题y类似于此,直到我还将transition()之前的高度设置为0。类似于:'.attr(“height”,function(d){return 0;})' – kendlete 2014-10-23 13:46:44