この問題は、パス要素を追加する svg 要素を選択する方法に関連しています。
コードの最初に新しいsvg
要素を作成し、それに要素を追加g
して、目的の場所に変換します。
var svg = d3.select("#chart").append("svg:svg")
.append("svg:g")
.attr("transform", "translate(" + r + "," + r +") rotate(180) scale(-1, -1)");
変数svg
が内部g
要素に対応していることを理解することが重要です。その原点は円弧の中心にあります (左上隅から平行移動 (500,500) しています)。これは、新しい要素を追加する要素です。実際、ほとんどのコードでその変数を使用しています。例えば:
var node = svg.selectAll("circle.node")
.data(nodes)
.enter().append("path")
.attr("class", "node")
ここで、黒い三角形を追加するときに、次を使用しました。
d3.select("#chart").select("svg").append("path")
ただし、svg
内側の要素を選択したかったのに、これは外側の要素を選択しますg
。もちろん、次のように言って修正できます。
d3.select("#chart").select("svg").select("g").append("path")
、しかしよりクリーンなアプローチは、svg 変数を使用し続けることです。
svg.append("path")
.attr("d", d3.svg.symbol().type("triangle-up"))
.attr("transform", "translate(0,0)")
.style("fill", "black");
更新されたフィドルを参照してください: http://jsfiddle.net/xwZjN/24/