मेरा लक्ष्य डी 3 फोर्स लेआउट का उपयोग दो अलग-अलग नेटवर्क प्रदर्शित करने के लिए करना है जो समान नोड्स साझा करते हैं। उदाहरण के लिए, चार लोगों में से, आप एक सोशल नेटवर्क और वंशावली नेटवर्क परिभाषित कर सकते हैं; नोड्स वही होंगे (लोग) लेकिन लिंक (रिश्तों) अलग हो सकते हैं। दो अलग-अलग बल लेआउट बनाने के बावजूद, दो अलग-अलग svg कैनवस, और अलग-अलग चर परिभाषित करने का प्रयास करते हुए, नोड्स x और y स्थिति संबंधी जानकारी साझा कर रहे हैं। यहाँ एक न्यूनतम उदाहरण है, जिसमें एक नेटवर्क पर नोड्स खींच अन्य नेटवर्क में अपनी स्थिति को बदल देता है: http://amath.colorado.edu/student/larremore/nodesSharingPositiond3उसी पृष्ठ पर डी 3 फोर्स लेआउट के कई उदाहरण
नीचे, मैं समारोह है कि नेटवर्क में से एक बनाने के लिए कहा जाता है तैनात है, और कोड बनाने के लिए अन्य बहुत समान है, लेकिन सभी मामलों में विभिन्न चर नामों का उपयोग करता है। दोनों नेटवर्क बनाने के लिए टिप्पणी कोड 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();
}
मैं एक ही बात करने के लिए आप के रूप में कोशिश कर रहा हूँ। मैं दो बल लेआउट जो एलेक्स रेनॉल्ड्स द्वारा उत्तर के लिए धन्यवाद काम करता है। हालांकि, मैं जहां स्थिति सिंक के लिए हुक स्थापित करने के लिए नहीं मिलता है।चूंकि डीबीलेरमोर के दृष्टिकोण के लिंक अब और काम नहीं करते हैं, क्या किसी को भी संकेत है कि कहां से शुरू करना है या शायद दूसरे उदाहरण से लिंक हो सकता है? – tty56