0

我有一个包含 3 个 JSON 对象的数组,我想在 d3 中绑定这些对象以制作一些矩形。但是,它不是只遍历数组一次,而是多次遍历它。我想知道这段代码是否看起来错误。

var w = 5000;
var h = 5000;
var svg = d3.select("body")
         .append("svg")
     .attr("width", w)   
     .attr("height", h);    

var elem = svg.selectAll("g")
         .data(dataset) 

var elemEnter = elem.enter()
                .append("g")

var rects = elemEnter.selectAll("rect")
            .data(dataArr)
            .enter()
            .append("rect")
            .attr("x", function(d, i) {
                console.log(i);
                return 75;
            })
            .attr("y", function(d, i) {
                return (i * 50) + 25;
            });

作为参考,这是我在控制台中打印出 dataArr 时的样子。[对象,对象,对象]

非常感谢帮忙。我一直试图理解为什么它在尝试创建矩形时多次循环数据。此外,这是代码中唯一有矩形的地方。

4

1 回答 1

1

您可能会看到数据集中元素数和 dataAttr 中元素数的叉积,因为上面的代码首先绑定数据集:

var elem = svg.selectAll("g")
    .data(dataset) 

var elemEnter = elem.enter()
    .append("g") 

使用 d3.js 时,chrome 的“检查元素”功能非常有用。

于 2013-08-25T23:38:02.293 回答