我在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/