私の目標は、d3 forceレイアウトを使用して、同じノードを共有する2つの異なるネットワークを表示することです。たとえば、4人の人の中で、ソーシャルネットワークと系図ネットワークを定義できます。ノードは同じ(人)ですが、リンク(関係)は異なる可能性があります。 2つの別々の力レイアウト、2つの別々のsvgキャンバスを作成し、別々の変数を定義しようとしても、ノードはxとyの位置情報を共有しています。ここ 1つのネットワーク上のノードをドラッグする、最小の例であり、他のネットワーク内のそれらの位置を変更: 以下http://amath.colorado.edu/student/larremore/nodesSharingPositiond3同じページのd3 forceレイアウトの複数インスタンス
、Iは、ネットワークのいずれかを作成するために呼び出される関数を投稿し、そしてコードは作成しますotherは非常に似ていますが、すべてのインスタンスで異なる変数名を使用します。両方のネットワークを作成するコメント付きコードはhttp://amath.colorado.edu/student/larremore/nodesSharingPositiond3/lib/minimal.jsにあり、変数の定義に使用されるスクリプトは/driver/minimalScript.jsにあります< - これを直接リンクするには十分な評判がありません。謝罪いたします!
d3.forceが動作する途中で、位置情報がグローバルであるか、グローバルに選択されている、などです。誰かがこれに光を当てることができますか?私は、d3.forceが位置計算をどのように扱い、更新するかを理解するだけでなく、位置情報を分離した状態に保つことにも興味があります。
function makeYNet() {
// This populates the YactiveLinks variable with the proper YLinks. The goal is to be able to only display links whose value is above some threshold.
for (var i=0; i<YLinks.length; i++) {
if (YLinks[i].link2 > thr) {
YactiveLinks.push(YLinks[i]);
}
}
// Add nodes and links to forceY
forceY
.nodes(YNodes)
.links(YactiveLinks);
// Draw lines
var Ylink = svgY.selectAll("line.link")
.data(YactiveLinks)
.enter()
.append("line")
.attr("class", "link")
.style("stroke-width", 2.0);
// Draw nodes
var Ynode = svgY.selectAll("circle.node")
.data(YNodes)
.enter().append("circle")
.attr("class", "node")
.attr("r", radius)
.attr("high",0)
.attr("id", function(d,i) {
return ("idy" + i);
})
.style("fill", function(d) { return color(d.group1); })
.call(forceY.drag)
;
// Define tick
forceY.on("tick", function() {
Ylink
.attr("x1", function(d) { return d.source.x; })
.attr("y1", function(d) { return d.source.y; })
.attr("x2", function(d) { return d.target.x; })
.attr("y2", function(d) { return d.target.y; });
Ynode.attr("cx", function(d) { return d.x; })
.attr("cy", function(d) { return d.y; });
});
// Start 'er up
forceY.start();
}
私はあなたと同じことをしようとしています.2つのフォースレイアウトのノード位置を同じページに同期させます。 Alex Reynoldsの返答のおかげで、私は2つのフォースレイアウトを持っています。しかし、私は位置同期のためのフックを設定する場所を取得しません。DBLaremoreのアプローチへのリンクはもはや動かないので、どこから始めたいのか、あるいは別の例へのリンクを知ってもらえますか? – tty56