4

力指向グラフで使用するノードの数を定義するデータセットがあります。のように見えます...

  var nodeSet = [
    {id: "N1", name: "Node 1", type: "Type 1", hlink: "http://www.if4it.com"},
    {id: "N2", name: "Node 2", type: "Type 3", hlink: "http://www.if4it.com/glossary.html"},
    {id: "N3", name: "Node 3", type: "Type 4", hlink: "http://www.if4it.com/resources.html"},
    {id: "N4", name: "Node 4", type: "Type 5", hlink: "http://www.if4it.com/taxonomy.html"},
    {id: "N5", name: "Node 5", type: "Type 1", hlink: "http://www.if4it.com/disciplines.html"}
  ];

d3.jsライブラリのforce.layoutに、id="N1"の"Node1"をプライマリルートまたはフォーカルノードとして使用するように具体的に指示するにはどうすればよいですか。

4

2 に答える 2

3

ルートノードのみが必要な場合は、そのノードを個別に処理するよりも、オブジェクトにルートプロパティを設定してtrueに設定できます。このルートを中央に設定することもできます。これが私たちのやり方です(d3+プロトタイプ-当時-現在はd3+jQuery +アンダースコアに切り替えています):

getCenter: function() {
    var center = {
        x : this.width / 2,
        y : this.height / 2
    };
    return center;
}

//later do something like this in your init method:
var first = {
                id : id,
                name : name,
                x : this.getCenter().x,
                y : this.getCenter().y,
                root : true,
                //other properties
            };

//later in your redraw() or other methods you might employ...
//try to find the root node later in the code using something like:
var rootNode = this.nodes.detect(function(node) {
    return node.root;
});

//do something to the root node after you have detected it...
if (rootNode) {
    rootNode.x = rootNode.px = this.getCenter().x;
    rootNode.y = rootNode.py = this.getCenter().y;
    //some other stuff...
}

これが私たちのやり方です。しかし、あなたの例のリンクが何であるかは私にはわかりません...少し戸惑いました。お気づきのように、力指向のレイアウトやより複雑なアニメーションの場合、ほとんどの場合、検出やインクルードなどの単純なメソッドや他の同様のRubyスタイルのメソッドにD3 +何か他のもの(プロトタイプ、jQuery、アンダースコア)を使用する必要があります。

于 2012-06-05T22:39:33.003 に答える
3

フォーカルノードまたはルートノードの意味がわかりません。特定の場所(中央など)で特定のノードを修正する場合は、その「fixed」属性をtrueに設定できます。詳細については、「 D3の力指向レイアウトでの固定ノードの位置」および「 D3での固定ノードの移動」を参照してください。

フォースディレクテッドレーダーグラフの例では、d3がノードリストの最初のノードを「ルート」ノードとして暗黙的に使用していることを示しているとは思いません。この例のノード1は、ネットワーク構造の結果として常に中心に向かって引き寄せられます。後でノード1をノードの配列に配置した場合、その動作は同じです。

于 2012-06-14T15:12:03.560 に答える