[英]D3 transition height
请告诉我为什么第136行的transition()方法仅适用于属性样式,而不适用于属性高度。
state.selectAll("rect")
.data(function (d) {
return d.ages;
})
.enter().append("rect")
.attr("width", x1.rangeBand())
.attr("x", function (d) {
return x1(d.name);
})
.attr("y", function (d) {
return y(d.value);
})
.transition().delay(function (d, i){ return i * 300;}).duration(3300)
.attr("height", function (d) {
return height - y(d.value);
})
.style("fill", function (d) {
return color(d.name);
});
之所以这样,是因为如果您不提供填充,则默认为黑色。 因此,它从黑色过渡到蓝色。 而您没有给它一个初始高度,因此它不会过渡。
为了解决这个问题,您必须将height设置为0(或您希望从此处开始的任何高度),然后过渡。 我已经将该函数附加到了一个名为rects
的变量上,以便稍后可以将过渡添加到该选择中:
var rects = state.selectAll("rect")
.data(function(d) {
return d.ages;
})
.enter().append("rect")
.attr("width", x1.rangeBand())
.attr("x", function(d) {
return x1(d.name);
})
.attr("y", function(d) {
return y(d.value);
})
.attr("height", 0);
rects.transition().delay(function(d, i) {
return i * 300;
}).duration(3300)
.attr("height", function(d) {
return height - y(d.value);
})
.style("fill", function(d) {
return color(d.name);
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.