source: Dev/trunk/d3/examples/force/force.js @ 76

Last change on this file since 76 was 76, checked in by fpvanagthoven, 14 years ago

d3

File size: 1.6 KB
Line 
1var w = 960,
2    h = 500,
3    fill = d3.scale.category20();
4
5var vis = d3.select("#chart")
6  .append("svg:svg")
7    .attr("width", w)
8    .attr("height", h);
9
10d3.json("miserables.json", function(json) {
11  var force = d3.layout.force()
12      .charge(-120)
13      .linkDistance(30)
14      .nodes(json.nodes)
15      .links(json.links)
16      .size([w, h])
17      .start();
18
19  var link = vis.selectAll("line.link")
20      .data(json.links)
21    .enter().append("svg:line")
22      .attr("class", "link")
23      .style("stroke-width", function(d) { return Math.sqrt(d.value); })
24      .attr("x1", function(d) { return d.source.x; })
25      .attr("y1", function(d) { return d.source.y; })
26      .attr("x2", function(d) { return d.target.x; })
27      .attr("y2", function(d) { return d.target.y; });
28
29  var node = vis.selectAll("circle.node")
30      .data(json.nodes)
31    .enter().append("svg:circle")
32      .attr("class", "node")
33      .attr("cx", function(d) { return d.x; })
34      .attr("cy", function(d) { return d.y; })
35      .attr("r", 5)
36      .style("fill", function(d) { return fill(d.group); })
37      .call(force.drag);
38
39  node.append("svg:title")
40      .text(function(d) { return d.name; });
41
42  vis.style("opacity", 1e-6)
43    .transition()
44      .duration(1000)
45      .style("opacity", 1);
46
47  force.on("tick", function() {
48    link.attr("x1", function(d) { return d.source.x; })
49        .attr("y1", function(d) { return d.source.y; })
50        .attr("x2", function(d) { return d.target.x; })
51        .attr("y2", function(d) { return d.target.y; });
52
53    node.attr("cx", function(d) { return d.x; })
54        .attr("cy", function(d) { return d.y; });
55  });
56});
Note: See TracBrowser for help on using the repository browser.