2016-07-20 10 views
0

Vis.jsを使用して項目間の関係を表示するWebアプリケーションを作成していますが、~1200個のノードを表示する必要があるポイントに達するまで、それらの間の。Vis.jsは多くのノードが追加されてもグラフを表示しません

ノードに達すると、グラフには空白と青い線だけが表示されます。私がズームしようとするとすぐに、線が消え、すべて白です。

ノードの位置を見ると、それらの多くが負の値または非常に大きな値であることがわかりますx, yポジション(通常は-300、xは478759527705558300000)。

私は物理学を無効にしようとしましたが、役に立たなかった。グラフは階層的なモードで、レベルは手動でコードに設定されていますが、レベルは正しいです。

ネットワークオプション(improvedLayoutオプションは、私がインターネットで見つけちょうど可能性だった。私はそれを削除した場合、それはちょうど同じに動作します):

var options = { 
     layout: { 
      improvedLayout: false, 
      hierarchical: { 
       direction: direction, 
       sortMethod: "directed" 
      } 
     } 
    } 

スクリーンショット: Screenshot

+0

vis.jsでレイアウトを管理し、ノードとエッジの配列を提供するだけですか? x、y座標データはどこから来たのですか? –

+0

@RobinMackenzie私はvis.jsが階層的なので、レイアウトを管理させています。私はノード(それぞれに 'level'引数)を提供しています。より小さなデータセットでうまく動作します – vagaerg

+0

レイアウトの完了後に 'network.fit();'を使ってみると、ズームに問題があるかどうかを確認できます。 –

答えて

1

私は約615ノードと614エッジからなる階層レイアウトグラフを持っています(40個の奇数クラスタノード、それらのうちのいくつかはクラスタクラスタです)。私はvisjsと同じ問題に上陸した。

私がこの問題を乗り越えるのを手伝った簡単なことは、反復回数を指定する引数を使ってnetwork .stabilize()メソッドを明示的に呼び出すことでした。デフォルトの反復は1000です。私は10000を通り、グラフはそれをきちんと安定させました。それは数秒かかった、私はそれで大丈夫だった。しかし、ノード数が〜1000に増加すると、安定化時間が短縮されます。だから私は解決のためにvisjsコードを調べ始めた。

visjsコードを調べているうちに、setupHierarchicalLayout()関数内に_condenseHierarchy()という呼び出しがあることがわかりました。 この方法では、ノードとエッジ間の空白を最小限に抑えようとしています()。完全にコードを理解するにはまだです。 _condenseHierarchy()は、ノードの座標を変更します。ノードがグラフ内の他のノードと互いに接近をもたらすために(安定に)反復の多くを取る離れた位置を取得すると

(this.body.nodes["node-11"]).y 
1530 
(this.body.nodes["node-11"]).y 
64920 

:未満)Yが_condenseHierarchy(の呼び出しの前と後の座標参照。私は_condenseHierarchy()を無効にし、グラフをうまく表示しました。

_condenseHierarchy()を無効にすると、さらに進むにつれてその他の問題が発生することは確かです。私は、_condenseHierarchy()を理解し、実験するためにもう少し時間を費やすつもりです。

+0

ライブラリがどのように内部で働くかについての興味深い洞察。私たちは最終的に(時間制約)、この修正を「バックログ」に残さなければならなかったので、実際の解決策は見つかりませんでした。しかし、将来あなたのソリューションを調査する時間がある場合は、その結果を掲載します。ありがとう! 編集:回避策を提供して以来、回答として選択しています – vagaerg

-1

この問題を解決するにはnodeSpacing、levelSeparation、treeSpacingなどの階層レイアウトパラメータを調整できます。ここに例がありますhierarchicalLayoutWithoutPhysics

+0

「私も」答えとして投稿しないでください。代わりに、あなたは新しい質問を通知するためにこの質問にお気に入りを付けることができます。十分な評判を得たら、[アップアップすることもできます](http://stackoverflow.com/privileges/vote-up)、[賞品を追加](http://stackoverflow.com/privileges/set-bounties)もっと注意を引く。 –

関連する問題