2

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 });

ただし、ノードデータに応じて、オプションでグループに別の要素を追加したいので、このノードのデータに「image」属性が含まれている場合は、新しい子要素(svg:image)を追加します。 )。svg:imageをすべてのノードに追加するのは簡単です(上記の円とテキストを実行したのと同じように追加します)。また、作成済みの要素の属性を動的に変更することも簡単です(上記のように、属性の値として関数を使用することによりtext)。データに属性が含まれている場合にのみsvg:image、子要素を追加する方法がわかりません。これを達成するための最良の方法は何ですか?image

4

1 に答える 1

11

Try selection.filter:

node.filter(function(d) { return d.image; }).append("image")
    .attr("xlink:href", function(d) { return d.image; })
    .attr("width", 16)
    .attr("height", 16);
于 2012-10-08T21:21:58.073 に答える