2016-04-01 3 views
1

私は現在、ネットワークビジュアライゼーション、より厳密にはフォースレイアウトにD3ライブラリを使用しています。D3.js force-layoutネットワークのしきい値関数内のリンクのストローク幅

私はここでサイモンのRaperが提供する機能を使用しています:

http://jsfiddle.net/simonraper/TdHgx/?utm_source=website&utm_medium=embed&utm_campaign=TdHgx

を自分のネットワーク上に動的閾値を適用します。

しかし、私は問題に気付きましたが、しきい値の変更時にネットワークのストローク幅が正しく表示されません。 Mr Raperの例でも、リンクのストローク幅は何の理由もなく変化することがわかります。

コンソールをすばやく見れば、値が正しいこととネットワークの形状が正しいことがわかりました。リンクのストローク幅の表示だけが間違っています。間違った値はランダムではなく、他のリンクに対応するため、インデックス作成の問題と思われます。

link=link.data(graph.links); 

link = link.data(force.links(), function(d){return d.source.name + "-" + d.target.name; }); 

でリスタート機能に:私は見つけることができる

最善を交換しました。

リンクのストローク幅が正しくなりましたが、これを行うときD3ライブラリでより多くの経験を積んだ、誰もが、私は非常に感謝助けることができればリンクは時々...

見えない;)

答えて

1

それはされている必要があります。

link.data(force.links(), function(d){return d.source + "-" + d.target; }); 

共同作業なしd.source.nameまたはd.target.name

はありませんデhere

閾値をスライド上EDIT

。 ノードのフィルタリングが行われているので、リンクが表示されません。

function threshold(thresh) { 
    //clearing up links 
    graph.links.splice(0, graph.links.length); 
    //only selecting and pushing links with value > threshold. 
     for (var i = 0; i < graphRec.links.length; i++) { 
      if (graphRec.links[i].value > thresh) {graph.links.push(graphRec.links[i]);} 
     } 
    restart(); 
} 
+0

ご回答ありがとうございますが、コードは機能しません。しきい値を2より上に移動すると、リンクの90%が消えます。また、link = link.data(graph.links、function(d){return d.source + " - " + d.target;}); link.data(force.links()、function(d){return d.source + " - " + d.target;})の代わりに、 – 6uillaum3

+0

上記の私の編集セクションをチェックしてください...それはリンクが滑り落ちる理由を説明します。 – Cyril

+0

私はすでにそれがどのように動作しているか知っています:)しかし、あなたのネットワークをよく見れば、いくつかのノードは接続されていてもリンクは見えません。ノードの移動方法を見ることで、それらのノードを接続する必要があることをすぐに確認できますが、リンクは表示されません。たとえば、しきい値が4〜5の場合、中央にグループ化された状態のノードがいくつか表示されていますが、それらのリンクは表示されず、値も確認済みです。編集:それらを移動しようとすると、私は何を意味するか見ることができる、彼らは接続されています。 – 6uillaum3

関連する問題