The whole file is pretty short and I've pasted the code, below. The interesting thing is that the binding seems to work fine for drawing the lines. However, it's as if the source's and/or target's X and Y values somehow get corrupted after I draw the lines, or (and it's very possible) I'm incorrectly accessing the data.
<!DOCTYPE html>
<html>
<head>
<title>My Force Directed Radial Graph</title>
</head>
<body>
<div id="chart"></div>
<script type="text/javascript">
var focalNode = "N1";
var nodeSet = [
];
var linkSet = [
{sourceId: "N1", linkName: "Relationship 1", targetId: "N2"},
{sourceId: "N3", linkName: "Relationship 2", targetId: "N1"},
{sourceId: "N4", linkName: "Relationship 3", targetId: "N1"},
{sourceId: "N1", linkName: "Relationship 4", targetId: "N5"},
{sourceId: "N6", linkName: "Relationship 5", targetId: "N1"},
{sourceId: "N1", linkName: "Relationship 6", targetId: "N7"},
{sourceId: "N1", linkName: "Relationship 7", targetId: "N8"},
{sourceId: "N9", linkName: "Relationship 8", targetId: "N1"},
{sourceId: "N1", linkName: "Relationship 9", targetId: "N10"},
{sourceId: "N11", linkName: "Relationship 10", targetId: "N1"},
{sourceId: "N1", linkName: "Relationship 11", targetId: "N12"},
{sourceId: "N13", linkName: "Relationship 12", targetId: "N1"},
{sourceId: "N1", linkName: "Relationship 13", targetId: "N14"},
{sourceId: "N1", linkName: "Relationship 14", targetId: "N15"},
{sourceId: "N16", linkName: "Relationship 15", targetId: "N1"},
{sourceId: "N17", linkName: "Relationship 16", targetId: "N1"},
{sourceId: "N18", linkName: "Relationship 17", targetId: "N1"},
{sourceId: "N19", linkName: "Relationship 18", targetId: "N1"},
{sourceId: "N20", linkName: "Relationship 19", targetId: "N1"},
{sourceId: "N21", linkName: "Relationship 20", targetId: "N1"},
{sourceId: "N22", linkName: "Relationship 21", targetId: "N1"},
{sourceId: "N1", linkName: "Relationship 22", targetId: "N23"},
{sourceId: "N1", linkName: "Relationship 23", targetId: "N24"}
];
</script>
<script type="text/javascript">
var width = 960,
height = 700,
centerNodeSize = 50;
nodeSize = 10;
colorScale = d3.scale.category20();
var svgCanvas = d3.select("#chart").append("svg:svg")
.attr("width", width)
.attr("height", height);
var node_hash = [];
var type_hash = [];
nodeSet.forEach(function(d, i) {
node_hash[d.id] = d;
type_hash[d.type] = d.type;
});
linkSet.forEach(function(d, i) {
d.source = node_hash[d.sourceId];
d.target = node_hash[d.targetId];
});
var nodes = self.nodes = nodeSet;
var links = self.links = linkSet;
var force = d3.layout.force()
.charge(-1000)
.nodes(nodes)
.links(links)
.size([width, height])
.linkDistance( function(d) { if (width < height) { return width*1/3; } else { return height*1/3 } } ) // Controls edge length
.on("tick", tick)
.start();
// Draw lines for Links between Nodes
var link = svgCanvas.selectAll(".link")
.data(force.links())
.enter().append("g")
.attr("class", "gLink")
.append("line")
.attr("class", "link")
.style("stroke", "#ccc")
.attr("y2", function(d) { return d.target.y; });
// Create Nodes
var node = svgCanvas.selectAll(".node")
.data(force.nodes())
.enter().append("g")
.attr("class", "node")
.on("mouseover", mouseover)
.on("mouseout", mouseout)
.call(force.drag);
// Append circles to Nodes
node.append("circle")
.attr("x", function(d) { return d.x; })
.attr("y", function(d) { return d.y; })
.attr("r", function(d) { if (d.id==focalNode) { return centerNodeSize; } else { return nodeSize; } } ) // Node radius
.style("fill", "White") // Make the nodes hollow looking
.style("stroke-width", 5) // Give the node strokes some thickness
.style("stroke", function(d, i) { colorVal = colorScale(i); return colorVal; } ) // Node stroke colors
.call(force.drag);
// Append text to Nodes
node.append("a")
.attr("xlink:href", function(d) { return d.hlink; })
.append("text")
//node.append("text")
.attr("x", function(d) { if (d.id==focalNode) { return 0; } else {return 20;} } )
.attr("y", function(d) { if (d.id==focalNode) { return 0; } else {return -10;} } )
.attr("text-anchor", function(d) { if (d.id==focalNode) {return "middle";} else {return "start";} })
.attr("font-family", "Arial, Helvetica, sans-serif")
.attr("fill", "Blue")
.attr("dy", ".35em")
.text(function(d) { return d.name; });
// Append text to Link edges
var linkText = svgCanvas.selectAll(".gLink")
.data(force.links())
.append("svg:text")
.attr("font-family", "Arial, Helvetica, sans-serif")