11

ノードをクリックすると、ノードが大きくなり、ノードが大きくなったので、他のノードをさらに反発させたいと思います。ノードの充電を変更するにはどうすればよいですか?

コードの抜粋:

[...]

//draw new graph
d3.json(file, function(error, graph) {

force
.nodes(graph.nodes)
.links(graph.links)
.start();

var nodeCircle = node.append("circle")
.attr("id", function(d) { return "node"+d.id })
.attr("class", function(d) {return "node "+d.nodeclass; })
.attr("r", 8) // R = Radius of node
.style("fill", function(d) { return d.color; }) // Will overwrite CSS style
.on("click",function(d) {

    //When CTRL key is pressed ....
    if (d3.event.ctrlKey) {
        if(d3.select(this).attr('r')==8){
            d3.select(this).attr('r', 12);
            //ToDo: node Charge = -1000
        }else{
            d3.select(this).attr('r', 8);
            //ToDo: node Charge = -500
        }
    }

}).call(force.drag);
[...]
4

2 に答える 2

5

ドキュメントから:

force.charge([チャージ])

電荷が指定されている場合、電荷強度を指定された値に設定します。充電が指定されていない場合、現在の充電強度を返します。デフォルトは -30 です。電荷が定数の場合、すべてのノードの電荷は同じです。それ以外の場合、charge が関数の場合、関数は各ノードに対して (順番に) 評価され、ノードとそのインデックスが渡され、 this コンテキストが強制レイアウトとして使用されます。関数の戻り値は、各ノードの充電を設定するために使用されます。この関数は、レイアウトが開始されるたびに評価されます。

charge()したがって、問題のノードに異なる料金を与える関数を指定して、レイアウトを再度開始する必要があります。

于 2013-05-18T01:48:36.473 に答える