我正在使用 D3 为数组中的每个对象绘制一个矩形,矩形的高度取决于对象的“大小”属性。这些矩形堆叠在一起。我目前通过对绘制的每个后续矩形的“大小”求和来设置 y 位置 - 但这似乎是错误的 - 我想知道是否有更好的方法来做到这一点,例如访问前一个的 'y' 属性项目(以及如何?)或其他方式...
这就是我的代码的本质。下面有一个指向小提琴的链接。
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;
});