2016-06-28 6 views
0

したがって、ノードポイントのシンボルをツリーグラフ上でレンダリングしたいとします。それはあまりにも悪いことではありません、私にそれを行うことができ、次のコードを持っている:D3ノードごとに異なるシンボルを持つSVGツリーグラフ

nodeEnter.append("path") 
.attr("d", d3.svg.symbol() 
.type(function(d) { if 
(d.type == "cross") { return "cross"; } else if 
(d.type == "rectangle") { return "rect";} 
etc... 
})); 

あなたが例はappend(「円」)、あなたができるため、特定の形状を追加使用している場合は、私が持っている問題は、あります幅、高さなどを指定します。d3.svg.symbolでは、サイズのみを指定できます。

nodeEnter.append("rect") 
.attr("width", rectW) 
.attr("height", rectH) 
.attr("stroke", "black") 
.attr("stroke-width", 1) 
.style("fill", function (d) { 
return d._children ? "lightsteelblue" : "#fff"; 
}); 

また、ノードタイプ属性に基づいた動的シェイプも使用できますか?

nodeEnter.append(function(d){if 
(d.type == "rectangle") { return "rect"; }}); 

はしかし、これはのエラーがスローされます:

は、私のようなものを試してみました

TypeError: Argument 1 of Node.appendChild is not an object. 

これは、シンボルを変更しようと気にしないでください検索中に私が見つけた例のほとんどそれらがすべてユニークである限り。繰り返しますが、私はもっと複雑なことをすることができるようにしたいと思います。

答えて

0

これに対する返答はありませんでしたが、何か問題がありました。

nodeEnter.append("path") 
    .attr("d", function(d) { if 
    (d.type == "circle") { return "M-40,0a40,40 0 1,0 80,0a40,40 0 1,0 -80,0";} 
    }); 

注意点はあるが、あなたがパスを手動で図形を描画する必要があります。答えは「D」属性の生の入力を使用し、完全にd3.svg.symbolスキップすることです。

関連する問題