Here is a JSFiddle我目前面臨的問題。我該如何解決這個條形圖排序問題?
基本上,我有一個對象的數組,我用來繪製一些酒吧。在對數組進行排序後,我嘗試相應地更新小節'y
的位置,但這不起作用。
所以,這是我用來繪製酒吧規模:
var yScale = d3.scale.ordinal()
.domain(d3.range(0, numberOfBars))
.rangeBands([0, numberOfBars * barHeight]);
所以,如果我有3間酒吧和酒吧爲40像素高,然後我映射0-3 => 0-120px 。
接下來,我有一個使用這種規模返回家園的權利y
位置的功能:
var y = function(d, i) {
return yScale(i);
};
繪圖使用此y
功能酒吧之後,我再對數據進行排序數組,並嘗試重新繪製吧:
barsContainer.selectAll('.bar')
.data(chartData.users)
.transition()
.duration(750)
.delay(delay)
.attr('y', y); // Not working. I thought this would order the bars.
//.attr('y', 120); // This works though. It moves all the bars to this y.
這是我難倒的地方。由於我重新排列了數組(chartData.users),並且由於條與數據「連接」,因此根據數據在數組中的新位置,條不應該更改其y
?
[This Sample](http://jsbin.com/ijepod/1/edit)可能會幫助 – functionoid
謝謝!這是最受歡迎的。所以我不需要對數組進行排序,然後通過'data()'函數將其綁定到數據上,我只需要在條上調用'sort()'函數。如果你想提交某種答案,我會很樂意接受它。 – Ashitaka
我很高興它爲你工作。既然你自己想出了自己,你應該得到信用。如果您發現評論有幫助,您可以投票評論。 – functionoid