我在d3图表中添加了一些圆圈,并且对传递给svg.selectAll()的参数有些困惑。在这里,我对数据和一些圈子进行数据联接:

svg.selectAll("top")
    .data(data)
    .enter()
    .append("circle")
    .attr({
        "cx": function(d,i){return i*50+50},
        "cy": 60,
        "r": function(d) {return rScale(parseFloat(d.value));},
        "class": "top"
    })
    .style({
        "fill": "CornflowerBlue",
        "stroke": "blue",
        "opacity": 0.8
    });


从我玩过的代码来看,这段代码似乎与以下代码相同:

    svg.selectAll("circle")
        .data(data)
        .enter()
        .append("circle")
        .attr({
            "cx": function(d,i){return i*50+50},
            "cy": 60,
            "r": function(d) {return rScale(parseFloat(d.value));},
            "class": "top"
        })
        .style({
            "fill": "CornflowerBlue",
            "stroke": "blue",
            "opacity": 0.8
        });


为了节省查找两个代码块之间一个差异的麻烦,它是selectAll("top") vs. selectAll("circle")

每当我浏览示例时,我几乎总会看到选择和附加元素之间的匹配,但这似乎无关紧要,至少在我运行它的上面的代码中没有。起初,我认为也许您可以沿类选择的方式使用某些东西,并将元素附加到它上面(svg.selectAll(".top")),但这也不起作用。那么d3.selectAll()参数的基本用途是什么?

最佳答案

enter()如何在初始创建中起作用的根本原因与所谓的数据联接或enter-update-exit模式有关。这里是一个链接:
http://bost.ocks.org/mike/join/

关于javascript - 如果我追加的内容似乎仅依赖于.append()调用,那么在数据连接期间将哪个术语传递给d3.selectAll()并不重要吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33001577/

10-10 18:00