Skip to content

Instantly share code, notes, and snippets.

@originalpete
Created April 18, 2012 22:45
Show Gist options
  • Save originalpete/2417163 to your computer and use it in GitHub Desktop.
Save originalpete/2417163 to your computer and use it in GitHub Desktop.
Collusion force directed layout
{"nodes":[{"name":"aboutads.info","group":1},{"name":"addthis.com","group":2},{"name":"admeld.com","group":2},{"name":"adnxs.com","group":2},{"name":"adtech.de","group":2},{"name":"answers.com","group":1},{"name":"baronsoffers.com","group":1},{"name":"blogspot.co.uk","group":1},{"name":"blogspot.com","group":1},{"name":"criteo.com","group":1},{"name":"dailymail.co.uk","group":1},{"name":"digitalspy.co.uk","group":1},{"name":"doubleclick.net","group":2},{"name":"facebook.com","group":2},{"name":"foxnews.com","group":1},{"name":"google.com","group":2},{"name":"guardian.co.uk","group":1},{"name":"imrworldwide.com","group":2},{"name":"mookie1.com","group":2},{"name":"msn.com","group":1},{"name":"news.com.au","group":1},{"name":"pubmatic.com","group":2},{"name":"quality-channel.de","group":1},{"name":"quantserve.com","group":2},{"name":"reuters.com","group":1},{"name":"rubiconproject.com","group":1},{"name":"scorecardresearch.com","group":2},{"name":"smh.com.au","group":1},{"name":"spiegel.de","group":1},{"name":"telegraph.co.uk","group":1},{"name":"tmz.com","group":1},{"name":"trustedreviews.com","group":1},{"name":"twitter.com","group":2},{"name":"yieldmanager.com","group":2},{"name":"zeit.de","group":1}],"links":[{"source":16,"target":25,"value":1.0},{"source":16,"target":26,"value":1.0},{"source":25,"target":26,"value":1.0},{"source":25,"target":12,"value":1.0},{"source":16,"target":17,"value":1.0},{"source":16,"target":23,"value":1.0},{"source":25,"target":32,"value":1.0},{"source":16,"target":12,"value":1.0},{"source":13,"target":18,"value":1.0},{"source":25,"target":18,"value":1.0},{"source":13,"target":12,"value":1.0},{"source":15,"target":12,"value":1.0},{"source":25,"target":3,"value":1.0},{"source":25,"target":33,"value":1.0},{"source":25,"target":23,"value":1.0},{"source":2,"target":12,"value":1.0},{"source":16,"target":32,"value":1.0},{"source":9,"target":12,"value":1.0},{"source":16,"target":9,"value":1.0},{"source":9,"target":25,"value":1.0},{"source":16,"target":3,"value":1.0},{"source":12,"target":3,"value":1.0},{"source":9,"target":3,"value":1.0},{"source":15,"target":8,"value":1.0},{"source":9,"target":21,"value":1.0},{"source":9,"target":33,"value":1.0},{"source":9,"target":2,"value":1.0},{"source":9,"target":4,"value":1.0},{"source":12,"target":15,"value":1.0},{"source":33,"target":25,"value":1.0},{"source":33,"target":3,"value":1.0},{"source":18,"target":3,"value":1.0},{"source":2,"target":3,"value":1.0},{"source":3,"target":23,"value":1.0},{"source":12,"target":23,"value":1.0},{"source":21,"target":23,"value":1.0},{"source":33,"target":23,"value":1.0},{"source":12,"target":26,"value":1.0},{"source":33,"target":26,"value":1.0},{"source":3,"target":12,"value":1.0},{"source":33,"target":12,"value":1.0},{"source":18,"target":12,"value":1.0},{"source":21,"target":12,"value":1.0},{"source":3,"target":2,"value":1.0},{"source":18,"target":33,"value":1.0},{"source":3,"target":18,"value":1.0},{"source":12,"target":18,"value":1.0},{"source":33,"target":21,"value":1.0},{"source":16,"target":13,"value":1.0},{"source":12,"target":17,"value":1.0},{"source":25,"target":21,"value":1.0},{"source":25,"target":4,"value":1.0},{"source":12,"target":25,"value":1.0},{"source":19,"target":12,"value":1.0},{"source":18,"target":1,"value":1.0},{"source":8,"target":1,"value":1.0},{"source":19,"target":21,"value":1.0},{"source":9,"target":23,"value":1.0},{"source":2,"target":23,"value":1.0},{"source":21,"target":33,"value":1.0},{"source":12,"target":33,"value":1.0},{"source":2,"target":33,"value":1.0},{"source":2,"target":26,"value":1.0},{"source":19,"target":26,"value":1.0},{"source":3,"target":9,"value":1.0},{"source":3,"target":25,"value":1.0},{"source":33,"target":4,"value":1.0},{"source":33,"target":18,"value":1.0},{"source":8,"target":32,"value":1.0},{"source":13,"target":17,"value":1.0},{"source":2,"target":17,"value":1.0},{"source":10,"target":26,"value":1.0},{"source":7,"target":12,"value":1.0},{"source":10,"target":12,"value":1.0},{"source":7,"target":15,"value":1.0},{"source":10,"target":15,"value":1.0},{"source":10,"target":23,"value":1.0},{"source":10,"target":17,"value":1.0},{"source":10,"target":3,"value":1.0},{"source":16,"target":18,"value":1.0},{"source":10,"target":18,"value":1.0},{"source":25,"target":2,"value":1.0},{"source":10,"target":33,"value":1.0},{"source":25,"target":9,"value":1.0},{"source":28,"target":13,"value":1.0},{"source":13,"target":16,"value":1.0},{"source":6,"target":33,"value":1.0},{"source":6,"target":3,"value":1.0},{"source":3,"target":4,"value":1.0},{"source":29,"target":15,"value":1.0},{"source":33,"target":15,"value":1.0},{"source":29,"target":12,"value":1.0},{"source":21,"target":25,"value":1.0},{"source":29,"target":25,"value":1.0},{"source":21,"target":3,"value":1.0},{"source":29,"target":3,"value":1.0},{"source":29,"target":17,"value":1.0},{"source":10,"target":32,"value":1.0},{"source":16,"target":2,"value":1.0},{"source":3,"target":26,"value":1.0},{"source":1,"target":3,"value":1.0},{"source":1,"target":33,"value":1.0},{"source":3,"target":33,"value":1.0},{"source":12,"target":2,"value":1.0},{"source":5,"target":12,"value":1.0},{"source":5,"target":23,"value":1.0},{"source":5,"target":9,"value":1.0},{"source":5,"target":3,"value":1.0},{"source":5,"target":1,"value":1.0},{"source":5,"target":2,"value":1.0},{"source":25,"target":19,"value":1.0},{"source":33,"target":2,"value":1.0},{"source":21,"target":26,"value":1.0},{"source":29,"target":32,"value":1.0},{"source":15,"target":18,"value":1.0},{"source":9,"target":16,"value":1.0},{"source":7,"target":26,"value":1.0},{"source":1,"target":9,"value":1.0},{"source":12,"target":9,"value":1.0},{"source":7,"target":23,"value":1.0},{"source":1,"target":12,"value":1.0},{"source":10,"target":13,"value":1.0},{"source":19,"target":13,"value":1.0},{"source":19,"target":32,"value":1.0},{"source":10,"target":2,"value":1.0},{"source":18,"target":21,"value":1.0},{"source":1,"target":25,"value":1.0},{"source":34,"target":12,"value":1.0},{"source":34,"target":26,"value":1.0},{"source":28,"target":22,"value":1.0},{"source":2,"target":9,"value":1.0},{"source":29,"target":13,"value":1.0},{"source":12,"target":21,"value":1.0},{"source":34,"target":23,"value":1.0},{"source":19,"target":15,"value":1.0},{"source":19,"target":3,"value":1.0},{"source":11,"target":12,"value":1.0},{"source":11,"target":23,"value":1.0},{"source":11,"target":26,"value":1.0},{"source":11,"target":3,"value":1.0},{"source":11,"target":32,"value":1.0},{"source":11,"target":2,"value":1.0},{"source":11,"target":18,"value":1.0},{"source":11,"target":33,"value":1.0},{"source":11,"target":25,"value":1.0},{"source":11,"target":9,"value":1.0},{"source":24,"target":26,"value":1.0},{"source":27,"target":26,"value":1.0},{"source":27,"target":12,"value":1.0},{"source":27,"target":17,"value":1.0},{"source":20,"target":12,"value":1.0},{"source":20,"target":25,"value":1.0},{"source":20,"target":23,"value":1.0},{"source":20,"target":26,"value":1.0},{"source":20,"target":17,"value":1.0},{"source":20,"target":33,"value":1.0},{"source":20,"target":3,"value":1.0},{"source":20,"target":18,"value":1.0},{"source":20,"target":1,"value":1.0},{"source":25,"target":1,"value":1.0},{"source":20,"target":19,"value":1.0},{"source":33,"target":9,"value":1.0},{"source":21,"target":2,"value":1.0},{"source":1,"target":2,"value":1.0},{"source":14,"target":26,"value":1.0},{"source":14,"target":3,"value":1.0},{"source":14,"target":12,"value":1.0},{"source":14,"target":23,"value":1.0},{"source":14,"target":17,"value":1.0},{"source":14,"target":2,"value":1.0},{"source":27,"target":25,"value":1.0},{"source":27,"target":3,"value":1.0},{"source":27,"target":32,"value":1.0},{"source":27,"target":2,"value":1.0},{"source":5,"target":26,"value":1.0},{"source":14,"target":32,"value":1.0},{"source":14,"target":18,"value":1.0},{"source":24,"target":12,"value":1.0},{"source":24,"target":18,"value":1.0},{"source":29,"target":26,"value":1.0},{"source":29,"target":2,"value":1.0},{"source":30,"target":17,"value":1.0},{"source":30,"target":26,"value":1.0},{"source":30,"target":12,"value":1.0},{"source":30,"target":15,"value":1.0},{"source":30,"target":23,"value":1.0},{"source":8,"target":12,"value":1.0},{"source":29,"target":23,"value":1.0},{"source":29,"target":19,"value":1.0},{"source":10,"target":19,"value":1.0},{"source":7,"target":8,"value":1.0},{"source":1,"target":4,"value":1.0},{"source":27,"target":9,"value":1.0},{"source":12,"target":4,"value":1.0},{"source":28,"target":12,"value":1.0},{"source":22,"target":12,"value":1.0},{"source":28,"target":32,"value":1.0},{"source":34,"target":32,"value":1.0},{"source":22,"target":26,"value":1.0},{"source":28,"target":9,"value":1.0},{"source":22,"target":4,"value":1.0},{"source":34,"target":25,"value":1.0},{"source":4,"target":12,"value":1.0},{"source":4,"target":26,"value":1.0},{"source":24,"target":13,"value":1.0},{"source":24,"target":32,"value":1.0},{"source":18,"target":25,"value":1.0},{"source":24,"target":17,"value":1.0},{"source":3,"target":17,"value":1.0},{"source":24,"target":15,"value":1.0},{"source":20,"target":15,"value":1.0},{"source":24,"target":3,"value":1.0},{"source":24,"target":23,"value":1.0},{"source":24,"target":33,"value":1.0},{"source":30,"target":32,"value":1.0},{"source":1,"target":32,"value":1.0},{"source":30,"target":33,"value":1.0},{"source":30,"target":2,"value":1.0},{"source":30,"target":18,"value":1.0},{"source":30,"target":3,"value":1.0},{"source":30,"target":1,"value":1.0},{"source":16,"target":21,"value":1.0},{"source":5,"target":33,"value":1.0},{"source":33,"target":17,"value":1.0},{"source":31,"target":12,"value":1.0},{"source":31,"target":23,"value":1.0},{"source":21,"target":9,"value":1.0},{"source":31,"target":25,"value":1.0},{"source":31,"target":4,"value":1.0},{"source":31,"target":3,"value":1.0},{"source":31,"target":33,"value":1.0},{"source":31,"target":26,"value":1.0},{"source":31,"target":19,"value":1.0},{"source":31,"target":13,"value":1.0},{"source":31,"target":15,"value":1.0},{"source":31,"target":18,"value":1.0},{"source":31,"target":17,"value":1.0},{"source":4,"target":3,"value":1.0},{"source":4,"target":2,"value":1.0},{"source":6,"target":2,"value":1.0},{"source":6,"target":26,"value":1.0},{"source":4,"target":33,"value":1.0},{"source":4,"target":23,"value":1.0},{"source":6,"target":23,"value":1.0},{"source":6,"target":12,"value":1.0},{"source":4,"target":21,"value":1.0},{"source":3,"target":21,"value":1.0},{"source":6,"target":21,"value":1.0},{"source":4,"target":25,"value":1.0},{"source":4,"target":18,"value":1.0},{"source":6,"target":18,"value":1.0},{"source":2,"target":6,"value":1.0},{"source":8,"target":23,"value":1.0},{"source":3,"target":19,"value":1.0},{"source":9,"target":13,"value":1.0},{"source":16,"target":15,"value":1.0},{"source":19,"target":23,"value":1.0},{"source":19,"target":1,"value":1.0},{"source":18,"target":2,"value":1.0},{"source":16,"target":8,"value":1.0},{"source":29,"target":33,"value":1.0},{"source":2,"target":25,"value":1.0},{"source":2,"target":18,"value":1.0},{"source":0,"target":12,"value":1.0},{"source":0,"target":4,"value":1.0},{"source":0,"target":21,"value":1.0},{"source":0,"target":25,"value":1.0},{"source":0,"target":3,"value":1.0},{"source":0,"target":2,"value":1.0},{"source":0,"target":9,"value":1.0},{"source":0,"target":1,"value":1.0},{"source":0,"target":18,"value":1.0},{"source":0,"target":23,"value":1.0},{"source":7,"target":3,"value":1.0},{"source":21,"target":17,"value":1.0},{"source":5,"target":15,"value":1.0},{"source":25,"target":17,"value":1.0},{"source":10,"target":25,"value":1.0},{"source":2,"target":19,"value":1.0},{"source":5,"target":13,"value":1.0},{"source":32,"target":13,"value":1.0},{"source":30,"target":13,"value":1.0},{"source":16,"target":19,"value":1.0},{"source":8,"target":13,"value":1.0},{"source":10,"target":4,"value":1.0},{"source":1,"target":21,"value":1.0},{"source":13,"target":8,"value":1.0},{"source":8,"target":15,"value":1.0},{"source":16,"target":1,"value":1.0},{"source":14,"target":13,"value":1.0},{"source":1,"target":18,"value":1.0}]}
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="http://mbostock.github.com/d3/d3.js"></script>
<style type="text/css">
circle.node {
stroke: #fff;
stroke-width: 1.5px;
}
.nodetext {
pointer-events: none;
font: 10px sans-serif;
}
circle text {
display: block;
color: black;
background-color: white;
}
line.link {
stroke: #999;
stroke-opacity: .3;
}
</style>
</head>
<body>
<script type="text/javascript">
var w = 960,
h = 500;
var vis = d3.select("body").append("svg:svg")
.attr("width", w)
.attr("height", h);
d3.json("graph.json", function(json) {
var force = self.force = d3.layout.force()
.nodes(json.nodes)
.links(json.links)
// .gravity(.07)
.friction(0.8)
.distance(300)
.linkStrength(0.1)
.charge(-30)
.size([w, h])
.start();
var link = vis.selectAll("line.link")
.data(json.links)
.enter().append("svg:line")
.attr("class", "link")
.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 node = vis.selectAll("g.node")
.data(json.nodes)
.enter().append("svg:g")
.attr("class", "node")
.call(force.drag);
node.append("svg:circle")
.attr("r", 5)
.style("fill", function(d) {
return (d.group == 1) ? 'red' : 'blue';
});
node.append("svg:text")
.attr("class", "nodetext")
.attr("dx", 12)
.attr("dy", ".35em")
.text(function(d) { return d.name });
force.on("tick", function() {
link.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; });
node.attr("transform", function(d) { return "translate(" + d.x + "," + d.y + ")"; });
});
});
</script>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment