2012-07-06 158 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