2
我正在使用D3爲數組中的每個對象繪製一個矩形,矩形的高度取決於對象的「大小」屬性。這些矩形堆疊在一起。我現在通過總結每個隨後被繪製的矩形的'大小'來設置y的位置 - 但這看起來是錯誤的 - 我想知道是否有更好的方法來做到這一點,例如訪問先前的'y'屬性項目(以及如何?)或另一種方式......D3:如何訪問前一個項目的屬性
這是我的代碼的本質是什麼樣子。有一個鏈接到下面的小提琴。
var cumY = 0;
var blocks1 = sampleSVG.selectAll("rect")
.data(fpp)
.enter()
.append("rect")
.sort(SortBySize)
.style("stroke", "gray")
.style("opacity", blockOpacity)
.style("fill", function (d) {return d.Colour})
.attr("width", 80)
.attr("height", function (d) {return d.Size})
.attr("x", 5)
.attr("y", function (d, i) {
var thisY = cumY;
cumY += d.Size;
// perhaps I could just return something like d.Size + previousItem.GetAttribute("y") ???
return thisY;
});
http://jsfiddle.net/ninjaPixel/bvER3/