Skip to content

Instantly share code, notes, and snippets.

@ChristosT
Last active March 13, 2016 02:10
Show Gist options
  • Select an option

  • Save ChristosT/8f1d059a289c307f19c1 to your computer and use it in GitHub Desktop.

Select an option

Save ChristosT/8f1d059a289c307f19c1 to your computer and use it in GitHub Desktop.
State-Adjacency

If someone wants to travel through all the states he/she has to go through New-York since it is the connecting link between VT ,MA, CT, VI,RI ME,NH. ME is the only state that it is accesible accesible through only one state FL,SC,DC,WA are accesible only by two states, you can easily see then since they are on the boundary of the graph and connected only with two other states

This simple force-directed graph shows character co-occurence in Les Misérables. A physical simulation of charged particles and springs places related characters in closer proximity, while unrelated characters are farther apart. Layout algorithm inspired by Tim Dwyer and Thomas Jakobsen. Data based on character coappearence in Victor Hugo's Les Misérables, compiled by Donald Knuth.

Compare this display to a force layout with curved links, a force layout with fisheye distortion and a matrix diagram.

forked from mbostock's block: Force-Directed Graph

<!DOCTYPE html>
<meta charset="utf-8">
<style>
.node {
stroke: #fff;
stroke-width: 1.5px;
}
.link {
stroke: #999;
stroke-opacity: .6;
}
</style>
<body>
<script src="//d3js.org/d3.v3.min.js"></script>
<script>
var width = 960,
height = 500;
var color = d3.scale.category20();
var force = d3.layout.force()
.charge(-120)
.linkDistance(30)
.size([width, height]);
var svg = d3.select("body").append("svg")
.attr("width", width)
.attr("height", height);
d3.json("states-adjacency.json", function(error, graph) {
if (error) throw error;
force
.nodes(graph.nodes)
.links(graph.links)
.start();
var link = svg.selectAll(".link")
.data(graph.links)
.enter().append("line")
.attr("class", "link")
.style("stroke-width", function(d) { return Math.sqrt(d.value); });
var node = svg.selectAll(".node")
.data(graph.nodes)
.enter().append("circle")
.attr("class", "node")
.attr("r", 5)
// .style("fill", function(d) { return color(d.group); })
.call(force.drag);
node.append("title")
.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("cx", function(d) { return d.x; })
.attr("cy", function(d) { return d.y; });
});
});
</script>
{
"nodes":[
{"name": "AL" },
{"name": "AR" },
{"name": "AZ" },
{"name": "CA" },
{"name": "CO" },
{"name": "CT" },
{"name": "DC" },
{"name": "DE" },
{"name": "FL" },
{"name": "GA" },
{"name": "IA" },
{"name": "ID" },
{"name": "IL" },
{"name": "IN" },
{"name": "KS" },
{"name": "KY" },
{"name": "LA" },
{"name": "MA" },
{"name": "MD" },
{"name": "ME" },
{"name": "MI" },
{"name": "MN" },
{"name": "MO" },
{"name": "MS" },
{"name": "MT" },
{"name": "NC" },
{"name": "ND" },
{"name": "NE" },
{"name": "NH" },
{"name": "NJ" },
{"name": "NM" },
{"name": "NV" },
{"name": "NY" },
{"name": "OH" },
{"name": "OK" },
{"name": "OR" },
{"name": "PA" },
{"name": "RI" },
{"name": "SC" },
{"name": "SD" },
{"name": "TN" },
{"name": "TX" },
{"name": "UT" },
{"name": "VA" },
{"name": "VT" },
{"name": "WA" },
{"name": "WI" },
{"name": "WV" },
{"name": "WY" }
],
"links":[
{"source":0,"target":8,"value":1},
{"source":0,"target":9,"value":1},
{"source":0,"target":23,"value":1},
{"source":0,"target":40,"value":1},
{"source":1,"target":16,"value":1},
{"source":1,"target":22,"value":1},
{"source":1,"target":23,"value":1},
{"source":1,"target":34,"value":1},
{"source":1,"target":40,"value":1},
{"source":1,"target":41,"value":1},
{"source":2,"target":3,"value":1},
{"source":2,"target":30,"value":1},
{"source":2,"target":31,"value":1},
{"source":2,"target":42,"value":1},
{"source":3,"target":31,"value":1},
{"source":3,"target":35,"value":1},
{"source":4,"target":14,"value":1},
{"source":4,"target":27,"value":1},
{"source":4,"target":30,"value":1},
{"source":4,"target":34,"value":1},
{"source":4,"target":42,"value":1},
{"source":4,"target":48,"value":1},
{"source":5,"target":17,"value":1},
{"source":5,"target":32,"value":1},
{"source":5,"target":37,"value":1},
{"source":6,"target":18,"value":1},
{"source":6,"target":43,"value":1},
{"source":7,"target":18,"value":1},
{"source":7,"target":29,"value":1},
{"source":7,"target":36,"value":1},
{"source":8,"target":9,"value":1},
{"source":9,"target":25,"value":1},
{"source":9,"target":38,"value":1},
{"source":9,"target":40,"value":1},
{"source":10,"target":12,"value":1},
{"source":10,"target":21,"value":1},
{"source":10,"target":22,"value":1},
{"source":10,"target":27,"value":1},
{"source":10,"target":39,"value":1},
{"source":10,"target":46,"value":1},
{"source":11,"target":24,"value":1},
{"source":11,"target":31,"value":1},
{"source":11,"target":35,"value":1},
{"source":11,"target":42,"value":1},
{"source":11,"target":45,"value":1},
{"source":11,"target":48,"value":1},
{"source":12,"target":13,"value":1},
{"source":12,"target":15,"value":1},
{"source":12,"target":22,"value":1},
{"source":12,"target":46,"value":1},
{"source":13,"target":15,"value":1},
{"source":13,"target":20,"value":1},
{"source":13,"target":33,"value":1},
{"source":14,"target":22,"value":1},
{"source":14,"target":27,"value":1},
{"source":14,"target":34,"value":1},
{"source":15,"target":22,"value":1},
{"source":15,"target":33,"value":1},
{"source":15,"target":40,"value":1},
{"source":15,"target":43,"value":1},
{"source":15,"target":47,"value":1},
{"source":16,"target":23,"value":1},
{"source":16,"target":41,"value":1},
{"source":17,"target":28,"value":1},
{"source":17,"target":32,"value":1},
{"source":17,"target":37,"value":1},
{"source":17,"target":44,"value":1},
{"source":18,"target":36,"value":1},
{"source":18,"target":43,"value":1},
{"source":18,"target":47,"value":1},
{"source":19,"target":28,"value":1},
{"source":20,"target":33,"value":1},
{"source":20,"target":46,"value":1},
{"source":21,"target":26,"value":1},
{"source":21,"target":39,"value":1},
{"source":21,"target":46,"value":1},
{"source":22,"target":27,"value":1},
{"source":22,"target":34,"value":1},
{"source":22,"target":40,"value":1},
{"source":23,"target":40,"value":1},
{"source":24,"target":26,"value":1},
{"source":24,"target":39,"value":1},
{"source":24,"target":48,"value":1},
{"source":25,"target":38,"value":1},
{"source":25,"target":40,"value":1},
{"source":25,"target":43,"value":1},
{"source":26,"target":39,"value":1},
{"source":27,"target":39,"value":1},
{"source":27,"target":48,"value":1},
{"source":28,"target":44,"value":1},
{"source":29,"target":32,"value":1},
{"source":29,"target":36,"value":1},
{"source":30,"target":34,"value":1},
{"source":30,"target":41,"value":1},
{"source":31,"target":35,"value":1},
{"source":31,"target":42,"value":1},
{"source":32,"target":36,"value":1},
{"source":32,"target":44,"value":1},
{"source":33,"target":36,"value":1},
{"source":33,"target":47,"value":1},
{"source":34,"target":41,"value":1},
{"source":35,"target":45,"value":1},
{"source":36,"target":47,"value":1},
{"source":39,"target":48,"value":1},
{"source":40,"target":43,"value":1},
{"source":42,"target":48,"value":1},
{"source":43,"target":47,"value":1}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment