我建议你有一个单一的数据集,因为你正在创建一个矩形,其中一个数据集在一个部分,然后用另一个数据集你制作 g 组......在那个组中你正在放置一个图像。
我建议在数据集中每个数据有一个 g。在那个 g 中附加你的图像和矩形......生活很容易。像这样的东西
var mygroups = svg.selectAll("g")
.data(piedata)
.enter().append("g");
mygroups
.append("rect")
.attr("width", x.rangeBand())
.attr("y", function (d) {
return y(d.y1);
})
.attr("height", function (d) {
return y(d.y0) - y(d.y1);
})
.attr("class", "rectangle")
.style("fill", function (d) {
return color(d.label);
});
mygroups
.append("svg:image")
.attr("xlink:href",function(d) {return d.image})
.attr("height", function (d) {
return y(d.y0) - y(d.y1);
}).attr("width", x.rangeBand())
.attr("y", function (d) {
return y(d.y1);
});
这里的工作代码:http: //jsfiddle.net/cyril123/0xo38x8q/7/