2016-04-01 17 views
1

Şu anda ağ görselleştirmem için D3 kitaplığını ve daha kesin olarak güç düzenini kullanıyorum.Bağlantılar D3.js kuvvet yerleşim ağı için eşik işlevindeki kontur genişliği

Burada Simon Raper tarafından sağlanan işlevi kullanıyorum:

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

benim ağ üzerindeki bir dinamik eşik uygulamak. Ancak bir sorun fark ettim, eşik değiştiğinde ağın strok genişliği yanlış görüntüleniyor. Raper örneğinde bile, bağlantıların kontur genişliğinin sebepsiz olarak değiştiğini görebilirsiniz.

Konsola hızlı bir şekilde baktığımda, değerlerin doğru olduğunu ve ağ şeklinin de doğru olduğunu, sadece bağlantıların kontur genişliğinin görüntülendiğini gösterdi. Ve yanlış değerler rastgele değil, diğer bağlantılara karşılık gelen bir indeksleme problemi gibi görünüyor.

link=link.data(graph.links); 

yeniden başlatma işlevi

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

tarafından:

Bulabildiğim en iyi

değiştirmekti.

bağlantıların inme genişliği

artık doğru ama D3 kütüphanesi ile daha deneyimli kimse ben çok takdir ediyorum yardımcı olabilir, bazen

... görünür olmaz bu bağlantıları yaparken;

cevap

1

) Bu olması gereken:

hiçbir d.source.name veya d.target.name

çalışma ko yoktur

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

de here

eşik kayar üzerinde DÜZENLEME

. Oluşan düğümlerin filtrelenmesi var, bağlantıların gösterilmesinin nedeni budur.

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

Yanıt için teşekkürler, ancak kodunuz çalışmıyor. 2'nin üzerindeki eşiği taşıdıktan sonra bağlantıların% 90'ı kaybolur. Ayrıca şunları da yapabilirsiniz: link = link.data (graph.links, function (d) {return d.source + "-" + d.target;}); link.data (force.links() işlevi yerine (d) {return d.source + "-" + d.target;}); – 6uillaum3

+0

Yukarıdaki düzenleme bölümüne bakın ... bu, bağlantıların neden kaymasıyla sonuçlanacağını açıklayacaktır. – Cyril

+0

Zaten nasıl çalıştığını biliyorum :), ancak ağınıza yakından bakarsanız, bazı düğümlerin bağlandığını fark edersiniz ancak bağlantılar görünmez. Düğümlerin nasıl hareket ettiğini inceleyerek, bunların bağlanmaları gerektiğini hızlı bir şekilde görebilirsiniz ancak bağlantı görüntülenmiyor. Örneğin, eşik 4-5 olduğunda, merkezde gruplanmış bazı düğümleri görebilirsiniz ancak bağlantıları görünmüyor ve değerlerini kontrol ettim, bağlanmaları gerekiyor. Düzenleme: Etrafında hareket etmeyi deneyin, ne demek istediğimi anlarsınız, bağlanırlar. – 6uillaum3