終於想通了;發帖以防其他人遇到類似問題。您可以使用標準的JavaScript語法訪問不同的數組。唯一棘手的是,在d3的堆棧佈局中,索引值(i)爲堆棧中的每個系列重置。所以你需要某種類型的計數器值,每次開始一個新的系列時跟蹤這個增量。
var n = 0;
var rect = tnum.selectAll("rect")
.data(function(d) {return(d)})
.enter().append("svg:rect")
.attr("x", function(d) { return x(d.x); })
.attr("y", function(d) { return -y(d.y0) - y(d.y); })
.attr("height", function(d) { return y(d.y); })
.attr("width", x.rangeBand())
.attr("title", function(d) { return d.x; })
.attr("class", function(d) { return d.y; })
.style("opacity", function(d, i) {
if(i === interp[0].length-1 && n < 2) {
n+=1;
}
var flag = interp[n][i].int;
console.log();
if (flag == 1) {return "0.85"} // if close is less than 400 fill = red
else { return "1" ;}})