使用 d3 中的强制布局,我可以愉快地添加节点,例如,一个圆形的 SVG 组和一些文本:
var node = vis.selectAll(".node")
.data(nodes)
.enter().append("svg:g")
.attr("class", "node");
node.append("svg:circle")
.attr("r", 5);
node.append("svg:text")
.text(function(d) { return d.nodetext });
但是,我想根据节点数据选择向组添加另一个元素:因此,如果此节点的数据包含“图像”属性,我想添加一个新的子元素(一个 svg:image )。将 svg:image 添加到所有节点很容易(我只是按照上面的圆圈和文本进行操作)。动态更改您已经创建的元素的属性也很容易(通过将函数作为属性的值,text
如上所述)。只有当数据包含属性时,我才知道如何添加svg:image
子元素。实现这一目标的最佳方法是什么?image