您可以为此依赖嵌套选择。您已经在使用嵌套选择了:
svg.selectAll(".bar")
.data(function(d) {return d.values;})
上面将不同的数据绑定到先前创建的3个SVG中的每一个。它通过调用function(d)
3次来执行此操作,并且d.values
每次都返回不同的值。
您可以执行类似的操作来绑定并在每个SVG中创建不同的注释集。您需要一个函数(传递给data()
),该函数可返回每个图表适用的注释,但是这次您没有预先计算的东西d.values
。相反,您必须annotations
使用filter()
以下命令从数组中提取适用的注释:
svg.selectAll(".annotation")
.data(function(d) {
// return annotations whose key matches d's key
return annotations.filter(function(a) { return a.key == d.key; });
})
然后,您可以使用enter()
和append()
完成对条的创建和定位文本。我不确定您打算如何布置它,但是您总共想要这样的东西:
svg.selectAll(".annotation")
.data(function(d) {
return annotations.filter(function(a) { return a.key == d.key; });
})
.enter()
.append("text")
.attr("class", "annotation")
.attr("x", function(d) { return x(d.xPos); })
.attr("y", function(d) { return d.yPos; })
.text(function(d) { return d.note; })
看:
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句