mvenu / Issue-in-Network-chart

<script type="text/javascript" charset="utf-8"> var w = 560, h = 460; var labelDistance = 0; var vis = d3.select("#body").append("svg:svg").attr("width", w).attr("height", h); /* var vis = d3.select("#network").append("svg:svg") .attr("width", w) .attr("height", h); */ var nodes = []; var labelAnchors = []; var labelAnchorLinks = []; var links = []; for(var i = 1; i &lt; 15; i++) { var node = { label : "Doctor " + i }; nodes.push(node); labelAnchors.push({ node : node }); labelAnchors.push({ node : node }); }; for(var i = 0; i &lt; nodes.length; i++) { for(var j = 0; j &lt; i; j++) { if(Math.random() &gt; .85) links.push({ source : i, target : j, weight : Math.random() }); } labelAnchorLinks.push({ source : i * 2, target : i * 2 + 1, weight : 2 }); }; var force = d3.layout.force().size([w, h]).nodes(nodes).links(links).gravity(1).linkDistance(50).charge(-3000).linkStrength(function(x) { return x.weight * 10 }); force.start(); var force2 = d3.layout.force().nodes(labelAnchors).links(labelAnchorLinks).gravity(0).linkDistance(0).linkStrength(8).charge(-100).size([w, h]); force2.start(); var link = vis.selectAll("line.link").data(links).enter().append("svg:line").attr("class", "link").style("stroke", "#CCC"); var node = vis.selectAll("g.node").data(force.nodes()).enter().append("svg:g").attr("class", "node"); node.append("svg:circle").attr("r", 5).style("fill", "#555").style("stroke", "#FFF").style("stroke-width", 3); node.call(force.drag); var anchorLink = vis.selectAll("line.anchorLink").data(labelAnchorLinks)//.enter().append("svg:line").attr("class", "anchorLink").style("stroke", "#999"); var anchorNode = vis.selectAll("g.anchorNode").data(force2.nodes()).enter().append("svg:g").attr("class", "anchorNode"); anchorNode.append("svg:circle").attr("r", 0).style("fill", "#FFF"); anchorNode.append("svg:text").text(function(d, i) { return i % 2 == 0 ? "" : d.node.label }).style("fill", "#555").style("font-family", "Arial").style("font-size", 12); var updateLink = function() { this.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; }); } var updateNode = function() { this.attr("transform", function(d) { return "translate(" + d.x + "," + d.y + ")"; }); } force.on("tick", function() { force2.start(); node.call(updateNode); anchorNode.each(function(d, i) { if(i % 2 == 0) { d.x = d.node.x; d.y = d.node.y; } else { var b = this.childNodes[1].getBBox(); var diffX = d.x - d.node.x; var diffY = d.y - d.node.y; var dist = Math.sqrt(diffX * diffX + diffY * diffY); var shiftX = b.width * (diffX - dist) / (dist * 2); shiftX = Math.max(-b.width, Math.min(0, shiftX)); var shiftY = 5; this.childNodes[1].setAttribute("transform", "translate(" + shiftX + "," + shiftY + ")"); } }); anchorNode.call(updateNode); link.call(updateLink); anchorLink.call(updateLink); }); </script> <div id="network"></div>
0 stars 0 forks source link

Issue in network chart #1

Open mvenu opened 10 years ago

mvenu commented 10 years ago

This is my code

<div id="network"></div>

I have to not call this javascript code on page load..i have to remove the body from here(var vis = d3.select("#body").append("svg:svg").attr("width", w).attr("height", h);).Instead of body i have to use div id.. please help me.

mvenu commented 10 years ago