'daki düğümlerin başlangıç konumlarını önceden hesaplayın ve ayarlayın. Igraph kullanarak kararlı kuvvet yönelimli grafiğin konumlarını önceden hesaplamaya çalışıyorum ve bunları d3.js grafiğime aktarıyorum. Bunun nedeni, kullanacağım veri kümesinin büyüklüğünden kaynaklanıyor, bu nedenle istemci tarafında tam güç hesaplaması yapılırsa, müşterinin donmaması için güvenemem. JSON formatındaki pozisyonlarım var ve d3.js.'de kullanışlı hale getirmek için lineer ölçekler kullandım.D3.js
var positions =
{"positions": [{"x":"-68.824367374", "y": "-6.10824525755"},
{"x":"-80.8080803911", "y": "-3.38997541264"},
{"x":"6.75334817585", "y": "-49.6040729697"},
{"x":"14.6608797291", "y": "-81.8897019921"},
....
var force = d3.layout.force()
.charge(-100)
.linkDistance(3)
.size([width, height])
.nodes(data.nodes)
.links(data.links)
.start();
var posX = d3.scale.linear()
.range([0,960])
.domain([-125,120]);
var posY = d3.scale.linear()
.range([0,500])
.domain([-125,125]);
Ve bunu yapmaya çalıştığım yol budur. Px ve py ile deney yaptım ama sonuçlar aynı. Bu kod asla kaçmamış gibi. Aşağıda görüldüğü gibi console.log
atarsam, değer yazdırılmaz. Bu kodu koyduğum yerden, kuvvete başlamadan önce veya sonra olsun.
force.on("start", function() {
node
.data(positions.positions)
.attr("cx", function(d) {
console.log(posX(d.x));
return posX(d.x);
})
.attr("cy", function(d) {
return posY(d.y);
})
});
Neden başlatma olayı düğümlerimin başlangıç konumlarını ayarlamıyor? Rastgele hâlâ başlamış gibi görünüyorlar. Alternatif olarak, bir d3.js kuvvetinin yönlendirilmiş grafiğinin kararlı durumunu önceden hesaplamanın iyi bir yolu nedir? Bunu Phantomjs üzerinde yapmaya çalıştım ama pes ettim.
Soruyu okumak için zaman ayırdığınız için teşekkür ederiz!
DÜZENLEME İşte
bir dumbed örnektir: https://jsfiddle.net/xp0zgqes/ bunu birkaç kez tekrarlayın ve düğümlerin başlangıç pozisyonlarına dikkat ederseniz onlar rastgele ilklendirildikten görebilirsiniz.
size ne bir çalışma keman sağlayabilir? – iulian
Lütfen gözden geçirilmiş soruya bakın. –
Gerçekten, hiç kimse? Merak ediyorum ... –