我是 d3 的新手,我正在使用 Scott Murray 的“Web 交互式数据可视化”(顺便说一句)来帮助我入门。现在,到目前为止,我所看到的一切都按描述工作,但是在查看创建新元素的过程时,有些事情让我感到困惑。简单示例(来自 Scott Murray):
svg.selectAll("circle")
.data(dataset)
.enter()
.append("circle");
该名称"circle"
用于selectAll
返回一个空选择(据我所知,这是可以的)。然后通过将相同的名称放入.append
. 伟大的!
现在让我感到困惑的是,当你想再次做同样的事情时会发生什么。因此,您有第二个数据集,并希望以相同的方式生成新圆圈。使用相同的代码只是替换数据集显然不起作用,因为它selectAll("circle")
不会再返回空选择。所以我玩了一下,发现我可以在中使用任何名称,selectAll
甚至可以像这样将其留空:selectAll()
Scott Murrays 的示例总是只使用每个数据集的一种类型(圆形、文本等)。最后我在官方示例中找到了类似的东西
svg.selectAll("line.left")
.data(dataset)
.enter()
.append("line")
.attr ...
svg.selectAll("line.right")
.data(dataset)
.enter()
.append("line");
.attr ...
现在我的问题是:这个条目是如何selectAll("ENTRY")
真正使用的?以后可以使用它以任何方式再次引用这些元素,还是它真的只是一个可以以任何方式选择的虚拟名称并且只需要返回一个空选择?我再也无法在生成的 DOM 或对象结构中的任何地方找到此条目。
谢谢你让我解惑。