これは、表示されていないものまですべてのパスを描画する方法をコードが計算しているときに、最大の計算boggleneckが実際に.on("tick", tickActions)
ステップに入ったようです。興味を持っている人のため
、私は最初のエッジかどうかを描画する前にtype
変数をチェックするtick actions
機能を変更:
function tickActions() {
// plot the curved links
link.attr("d", function(d) {
if (d.type != draw_type) return null;
// code to draw paths
});
}
draw_type
変数を変更することで、あなたが実際に計算して描画されるエッジかを決定することができます。
これに加えて、特定のエッジの強さも無視する必要があります。私は私のグラフのみ直線エッジに基づいて間隔を置いて配置されるように望んでいたことを知っていたので、私はsimulation.force('link', link_force)
属性に対して次のようでした:0にすべての非直線エッジの強さを設定することにより
var link_force = d3.forceLink()
// code for .id and .distance attributes
// return 0 for all non
.strength(function(d) {
if (d.type != 'straight') return 0;
return 0.3;
});
、力アルゴリズム基本的にノードを配置するときに無視されます。
最後に、グラフを更新するrestart_network()
関数を追加しました。この関数を使用して、グラフに表示される実際のリンクデータを変更することは可能ですが、他の変更も同様に含めることにしました。
function restart_network() {
simulation.force("link", link_force);
simulation.alpha(1).restart();
}