2011-10-07 8 views
5

単一のノードを持つ簡単なArbor JSグラフを作成すると、そのノードはすべての場所でジッタがかかり、それ以上ノードを追加することはできません。Arbor.JSの単一ノードのバグ

問題は、他のユーザーによってここに報告されます。

https://github.com/samizdatco/arbor/issues/12

はそれが本当に修正はありませんが、私は、ノードの数をカウントした場合の修正/回避策

+0

これは私がd3.jsライブラリ[http://mbostock.github.com/d3/]に移動したので、これは優れた選択肢です。 –

+0

この問題は、ノードが増えている場合にも他のケースでも発生するようです。たとえば、約30のノードが中央ノードに接続されていて、その中央ノードも同様に跳ね返り始めました。 – user579674

答えて

2

Arborの代わりにd3.jsライブラリを使用して私の問題を解決しました:

+0

再描画を再定義できますか?あなたはアーバーと同じように?レンダリングされた図形ではなく、ノードにDOM要素を使用できるようにする必要があります。 = \ – NullVoxPopuli

2

であなたの助けいただければ幸いです私は摩擦を1.0未満に設定しました。

if (nodeCount == 1) { 
    //Stop single nodes bouncing all over the place 
    sys.parameters({ friction: '1.0' }); 
} 
+0

正確にノードを数えますか?私はそれらを数えようとしてきましたが、ノード配列にアクセスできないので、arbor.jsファイルの外で行う方法はわかりません。 – user579674

1

もう1つの方法は、physics.jsファイルをthisに置き換えることです。単一のノードを持つことに関する問題を補うためのいくつかの修正があります(2番目のノードを追加する問題も含みます)。

0

は、我々は、このための回避策ソリューションを使用して、この

if (nodeCount == 1) { 
 
      sys.parameters({ repulsion: 10, gravity: false, dt: 0.035 }) 
 
     } 
 
     else if (nodeCount > 1 && nodeCount < 30) { 
 
      sys.parameters({ repulsion: 1000, gravity: false, dt: 0.35 }) 
 
     } 
 
     else { 
 
      sys.parameters({ friction: .1, stiffness: 0.1, repulsion: 1, gravity: false, dt: 0.035 }) 
 
     }

2

を試してみてください。おそらく完全な解決策よりも多くのハックがありますが、実装が簡単で、ほとんどの場合、正常に動作します。

私たちは、パーティクルを追加または削除するたびに、システム内のパーティクルの数を決定します。この数が1に等しい場合、システムに新しいパーティクルを追加し、色をキャンバスの背景色に設定します。ノードの色は背景と同じなので、表示されません。

グラフにはノードが1つもありません。追加または削除によってそれが発生するたびに、この隠しバランシングノードを追加します。 http://www.graphthinker.comのライブサンプルをご覧になるには、当社のウェブサイトをご覧ください。ノードを追加すると、ノードが1つ(可視)のノードしか持たない場合でもグラフが応答性を維持していることがわかります。

この非平衡ノードは、もはや必要がなくなったとき、別のノードが追加されたとき、または表示されているノードのみが削除されたときなどに削除できます。