Created
February 22, 2015 16:28
-
-
Save shawngraham/842aa8e1ae797ec36286 to your computer and use it in GitHub Desktop.
d3-topic-model
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"name": "Centre", | |
"children": [ | |
{ | |
"name": "1", | |
"imports": [ | |
{ | |
"name": "1", | |
"imports": [ | |
{ | |
"name": "1", | |
"imports": [ | |
{ | |
"name": "1", | |
"size": "answer hear question eff gchq nsa's" | |
}, | |
{ | |
"name": "1", | |
"size": "kisses lies sex pretty porn revenge" | |
}, | |
{ | |
"name": "1", | |
"size": "soldiers looting dead ukrainian camera dajeypetros" | |
}, | |
{ | |
"name": "1", | |
"size": "sale pants customers yoga that's back" | |
}, | |
{ | |
"name": "1", | |
"size": "the_dogangel baitdogs looted good newton helmut" | |
}, | |
{ | |
"name": "1", | |
"size": "bike black reported blue red it's" | |
}, | |
{ | |
"name": "1", | |
"size": "tonight home polarisbikewear bring offices yorkshire" | |
}, | |
{ | |
"name": "1", | |
"size": "pls puppy bolton tongemoor passwords doglostuk" | |
}, | |
{ | |
"name": "1", | |
"size": "black shit australia snake habitat movie" | |
}, | |
{ | |
"name": "2", | |
"size": "br_stolen blogkatia fricelivieira aeciofaraujo paperback age" | |
}, | |
{ | |
"name": "1", | |
"size": "find wondering documents bring probe reliance" | |
}, | |
{ | |
"name": "1", | |
"size": "looting men antiquities monuments isis funds" | |
}, | |
{ | |
"name": "1", | |
"size": "black data market health care white" | |
}, | |
{ | |
"name": "2", | |
"size": "phone car i'm it's back don't" | |
}, | |
{ | |
"name": "1", | |
"size": "beaten pets crates crammed suilee nsel" | |
}, | |
{ | |
"name": "2", | |
"size": "books germany rare returns water found" | |
}, | |
{ | |
"name": "2", | |
"size": "car york rspcahull kids online cops" | |
}, | |
{ | |
"name": "2", | |
"size": "looting truth looters looted state council" | |
}, | |
{ | |
"name": "1", | |
"size": "game added curry shoes stephen tribute" | |
}, | |
{ | |
"name": "1", | |
"size": "illicit delhi church obama issue raised" | |
}, | |
{ | |
"name": "1", | |
"size": "picture picking stranger hey book idea" | |
}, | |
{ | |
"name": "2", | |
"size": "ang â_ù hahaha yung shot kahit" | |
}, | |
{ | |
"name": "1", | |
"size": "bike illicit quad valor today show" | |
}, | |
{ | |
"name": "1", | |
"size": "loot crate box gamer geek subscription" | |
}, | |
{ | |
"name": "1", | |
"size": "crew billion banks hacker forbestech http://t.co/afs" | |
}, | |
{ | |
"name": "1", | |
"size": "reward cornwall female months find large" | |
}, | |
{ | |
"name": "1", | |
"size": "tweet missing feel gold swamy princexfbgm" | |
}, | |
{ | |
"name": "1", | |
"size": "thing dollar million global banks succeed" | |
}, | |
{ | |
"name": "1", | |
"size": "ago call putin hundreds billions week" | |
}, | |
{ | |
"name": "2", | |
"size": "police appeal car audi source crashes" | |
}, | |
{ | |
"name": "2", | |
"size": "youth seattle facts post nba looted_candy" | |
}, | |
{ | |
"name": "2", | |
"size": "meat don't people save lives red" | |
}, | |
{ | |
"name": "1", | |
"size": "illicit husband's cruelty relationship show affair" | |
}, | |
{ | |
"name": "1", | |
"size": "post blog model latina beautiful amateur" | |
}, | |
{ | |
"name": "1", | |
"size": "police vehicle car crash chase parade" | |
}, | |
{ | |
"name": "1", | |
"size": "findmurphyhusky murphy bradford good wishes campaign" | |
}, | |
{ | |
"name": "1", | |
"size": "putin man richest fortune world billion" | |
}, | |
{ | |
"name": "2", | |
"size": "he's beautiful lunch reds buckeyeedge documents" | |
}, | |
{ | |
"name": "1", | |
"size": "tweets article share tomorrow w/o crediting" | |
}, | |
{ | |
"name": "1", | |
"size": "illicit photographer set expose demands returned" | |
}, | |
{ | |
"name": "1", | |
"size": "russian moved missing plant online brought" | |
}, | |
{ | |
"name": "1", | |
"size": "ndtv timesnow debate headlinestoday anti-hindu htt" | |
}, | |
{ | |
"name": "1", | |
"size": "africa american lisa bulldog mona manchester" | |
}, | |
{ | |
"name": "1", | |
"size": "temple hindu gold delhi vandalised neelakshigswm" | |
}, | |
{ | |
"name": "1", | |
"size": "uniteblue board looted money pay pedal" | |
}, | |
{ | |
"name": "2", | |
"size": "account twitter spam ahmettsmsk support anontr_freepala" | |
}, | |
{ | |
"name": "2", | |
"size": "yacht sydney february fugitives police paul" | |
}, | |
{ | |
"name": "2", | |
"size": "day valentine's heart happy love tweet" | |
}, | |
{ | |
"name": "1", | |
"size": "card credit cards man bukolasaraki info" | |
}, | |
{ | |
"name": "1", | |
"size": "pony cropston contact leicestershire pls looting" | |
}, | |
{ | |
"name": "2", | |
"size": "looting land read long video youtube" | |
}, | |
{ | |
"name": "2", | |
"size": "looting people yeah money parents car" | |
}, | |
{ | |
"name": "2", | |
"size": "looting touch mil bikes jtg millones" | |
}, | |
{ | |
"name": "1", | |
"size": "looted ferguson looting looters guess money" | |
}, | |
{ | |
"name": "2", | |
"size": "money act govt antiquities lab looting" | |
}, | |
{ | |
"name": "2", | |
"size": "base foto police history pdx phone" | |
}, | |
{ | |
"name": "2", | |
"size": "illicit drugs miss time drug money" | |
}, | |
{ | |
"name": "1", | |
"size": "goods recovered trades police crawford-browne friend" | |
}, | |
{ | |
"name": "1", | |
"size": "wwe heart gear missguided love pizza" | |
}, | |
{ | |
"name": "1", | |
"size": "yung picture kaibigan lang mapagtawanan izu-zoom" | |
}, | |
{ | |
"name": "2", | |
"size": "stop rise getmurphyhome imagine pet bramble" | |
}, | |
{ | |
"name": "2", | |
"size": "items jewellery wages awarded police riding" | |
}, | |
{ | |
"name": "1", | |
"size": "markets time info limelight balotelli sturridge's" | |
}, | |
{ | |
"name": "2", | |
"size": "i'm don't people can't bad it's" | |
}, | |
{ | |
"name": "1", | |
"size": "land israel bds illegal jaffa zionist" | |
}, | |
{ | |
"name": "1", | |
"size": "sam grey keeleyspetserv looting ferguson looters" | |
}, | |
{ | |
"name": "1", | |
"size": "bike giant hyperx pls kind hour" | |
}, | |
{ | |
"name": "1", | |
"size": "pls dogsmissing trike ago hour back" | |
}, | |
{ | |
"name": "1", | |
"size": "pdchina protect_wldlife whattheffacts calf itsmainakageni jeanhonorefragonard" | |
}, | |
{ | |
"name": "1", | |
"size": "man games card credit steals compromise" | |
}, | |
{ | |
"name": "2", | |
"size": "ransack police silver toyota pls colour" | |
}, | |
{ | |
"name": "1", | |
"size": "letter dog back share lostdog reward" | |
}, | |
{ | |
"name": "1", | |
"size": "london microchipped youtube puppy reward plz" | |
}, | |
{ | |
"name": "2", | |
"size": "kiss enemy god area cash worth" | |
}, | |
{ | |
"name": "1", | |
"size": "police chief scandal gun fired california" | |
}, | |
{ | |
"name": "1", | |
"size": "rvaidya temple raviyogarajan husky siberian truck" | |
}, | |
{ | |
"name": "1", | |
"size": "number banks global group hackers skynews" | |
}, | |
{ | |
"name": "2", | |
"size": "it's people thief stole wealth you're" | |
}, | |
{ | |
"name": "2", | |
"size": "heart happyvalentinesday dog weeks annasaccone newpuppy" | |
}, | |
{ | |
"name": "2", | |
"size": "phone phones morning love early live" | |
}, | |
{ | |
"name": "1", | |
"size": "released million passwords dollars h/t marshacollier" | |
}, | |
{ | |
"name": "2", | |
"size": "ago peace call page ref looted" | |
}, | |
{ | |
"name": "2", | |
"size": "crime website lime hacke room i've" | |
}, | |
{ | |
"name": "1", | |
"size": "data billion records clairebeargdl puppy pls" | |
}, | |
{ | |
"name": "2", | |
"size": "women march houses sisters indigenous illicit" | |
}, | |
{ | |
"name": "1", | |
"size": "isis looted artefacts syrian funded buying" | |
}, | |
{ | |
"name": "1", | |
"size": "looting israel gas people palestine money" | |
}, | |
{ | |
"name": "1", | |
"size": "looting liberalism america tcot wakeupamerica destroying" | |
}, | |
{ | |
"name": "1", | |
"size": "couple churches international gauravaery sensation vandalize:become" | |
}, | |
{ | |
"name": "1", | |
"size": "jrlewisauthor lives joseph lewis thriller child" | |
}, | |
{ | |
"name": "1", | |
"size": "lagos funds looted fashola looting exposed" | |
}, | |
{ | |
"name": "2", | |
"size": "thousands killing i'm heart raid tens" | |
}, | |
{ | |
"name": "2", | |
"size": "books people authormaggiep fiftyshades fiction west" | |
}, | |
{ | |
"name": "1", | |
"size": "truck vehicle khou car selfie food" | |
}, | |
{ | |
"name": "1", | |
"size": "car campus custody follow suspect vehicle" | |
}, | |
{ | |
"name": "2", | |
"size": "car police cars man san home" | |
} | |
] | |
} | |
] | |
} | |
] | |
}, | |
{ | |
"name": "2", | |
"imports": [ | |
{ | |
"name": "2", | |
"imports": [ | |
{ | |
"name": "11", | |
"imports": [ | |
{ | |
"name": "26", | |
"size": "office kenroth cars police car men" | |
} | |
] | |
}, | |
{ | |
"name": "12", | |
"imports": [ | |
{ | |
"name": "27", | |
"size": "â_ù bjp silent vetsgetscanning baby helpfindthem" | |
} | |
] | |
}, | |
{ | |
"name": "13", | |
"imports": [ | |
{ | |
"name": "30", | |
"size": "bank largest hackers heists approximately cnn" | |
} | |
] | |
}, | |
{ | |
"name": "14", | |
"imports": [ | |
{ | |
"name": "31", | |
"size": "bitcoin exchange chinese bter hacked million" | |
}, | |
{ | |
"name": "38", | |
"size": "bitcoin atms amsterdam killed pets meat" | |
}, | |
{ | |
"name": "38", | |
"size": "bitcoin bter wallet cold exchange hack" | |
} | |
] | |
}, | |
{ | |
"name": "2", | |
"imports": [ | |
{ | |
"name": "3", | |
"size": "banks hackers billion steal millions malware" | |
}, | |
{ | |
"name": "34", | |
"size": "hacking time ring limelight balotelli sturridge's" | |
}, | |
{ | |
"name": "37", | |
"size": "banks million hackers world group unknown" | |
}, | |
{ | |
"name": "3", | |
"size": "billion banks hackers gang steals hacker" | |
}, | |
{ | |
"name": "3", | |
"size": "banks billion cyberheist jasonabela girls unprecedented" | |
} | |
] | |
}, | |
{ | |
"name": "3", | |
"imports": [ | |
{ | |
"name": "32", | |
"size": "breakingnews cats festival yulin phone back" | |
}, | |
{ | |
"name": "28", | |
"size": "secret unit arms illicit mideast bloodshed" | |
}, | |
{ | |
"name": "10", | |
"size": "voice dogs family yulin pet consumption" | |
}, | |
{ | |
"name": "40", | |
"size": "back looted nation bringing committed assets" | |
}, | |
{ | |
"name": "39", | |
"size": "antiquities collection museum israel donated york" | |
}, | |
{ | |
"name": "8", | |
"size": "millions report nsa keys sim encryption" | |
}, | |
{ | |
"name": "15", | |
"size": "gold medal kelly commonwealth games sotherton's" | |
}, | |
{ | |
"name": "11", | |
"size": "today's paper bangladesh bunibroto cannondale pic" | |
}, | |
{ | |
"name": "36", | |
"size": "police recover photo english valentines girls" | |
}, | |
{ | |
"name": "19", | |
"size": "alive boiled enddogmeat auction timesnow coal" | |
}, | |
{ | |
"name": "13", | |
"size": "dance chance milky nowplaying album youtube" | |
}, | |
{ | |
"name": "7", | |
"size": "family criminals pjmooney thieves return mom" | |
}, | |
{ | |
"name": "36", | |
"size": "video dreams pls support official bringbackourgirls" | |
}, | |
{ | |
"name": "16", | |
"size": "it's man make earth richest billion" | |
}, | |
{ | |
"name": "10", | |
"size": "meat market thetimes sold dog justice" | |
}, | |
{ | |
"name": "8", | |
"size": "keys encryption riches ggreenwald spies sim" | |
}, | |
{ | |
"name": "18", | |
"size": "antiquities looted funding video isis bbc" | |
}, | |
{ | |
"name": "20", | |
"size": "shoes ahead curry contests friends time" | |
}, | |
{ | |
"name": "10", | |
"size": "win year beats death dogs consumption" | |
}, | |
{ | |
"name": "10", | |
"size": "thieves family profit pets meat supply" | |
}, | |
{ | |
"name": "10", | |
"size": "imagine washingtonpost pet rally duoduo recovered" | |
}, | |
{ | |
"name": "29", | |
"size": "tom crean sbnation picture defining lvkgvm" | |
}, | |
{ | |
"name": "8", | |
"size": "ice vanilla companies gave w/o monitor" | |
}, | |
{ | |
"name": "6", | |
"size": "stole pets risk unbearable xhnews clown" | |
}, | |
{ | |
"name": "14", | |
"size": "glances cr.owner exoffical http://t.co/uamrkmfo lmao bike" | |
}, | |
{ | |
"name": "20", | |
"size": "shoes all-star stephen weekend curry curry's" | |
}, | |
{ | |
"name": "35", | |
"size": "vehicle driving drake teen records rapping" | |
}, | |
{ | |
"name": "7", | |
"size": "ashes mother baby's burglary baby arizona" | |
}, | |
{ | |
"name": "4", | |
"size": "sophiegericke theellenshow tickets love onedirection serata" | |
}, | |
{ | |
"name": "25", | |
"size": "looted indian home torched bother seculars" | |
}, | |
{ | |
"name": "19", | |
"size": "food sold nbcnewsworld enddogmeat looted palace" | |
} | |
] | |
}, | |
{ | |
"name": "5", | |
"imports": [ | |
{ | |
"name": "9", | |
"size": "van dogs chicago doggy day care" | |
}, | |
{ | |
"name": "9", | |
"size": "van dogs chicago abc daycare inside" | |
}, | |
{ | |
"name": "9", | |
"size": "dogs vehicle daycare doggie inside gunpoint" | |
} | |
] | |
} | |
] | |
}, | |
{ | |
"name": "3", | |
"imports": [ | |
{ | |
"name": "4", | |
"imports": [ | |
{ | |
"name": "5", | |
"size": "kellysotherton commonwealth gold medal thing find" | |
}, | |
{ | |
"name": "5", | |
"size": "gold kellysotherton commonwealth medal thing find" | |
} | |
] | |
} | |
] | |
}, | |
{ | |
"name": "4", | |
"imports": [ | |
{ | |
"name": "6", | |
"imports": [ | |
{ | |
"name": "12", | |
"size": "marker mile colorado interstate haircutmeme thefunniestkids" | |
}, | |
{ | |
"name": "24", | |
"size": "mile read sign change colorado officials" | |
} | |
] | |
} | |
] | |
}, | |
{ | |
"name": "5", | |
"imports": [ | |
{ | |
"name": "10", | |
"imports": [ | |
{ | |
"name": "23", | |
"size": "hearts leave girls smart don't don" | |
} | |
] | |
}, | |
{ | |
"name": "15", | |
"imports": [ | |
{ | |
"name": "33", | |
"size": "heart broken girls strong ohteenquotes bobongwords" | |
} | |
] | |
}, | |
{ | |
"name": "7", | |
"imports": [ | |
{ | |
"name": "17", | |
"size": "missing dog wesleystromberg's fluffiness zeus andrearussett" | |
} | |
] | |
}, | |
{ | |
"name": "8", | |
"imports": [ | |
{ | |
"name": "21", | |
"size": "ühü üјü ü܈ü ۈühüá üӈü ۈühüµ" | |
} | |
] | |
} | |
] | |
}, | |
{ | |
"name": "6", | |
"imports": [ | |
{ | |
"name": "9", | |
"imports": [ | |
{ | |
"name": "22", | |
"size": "world india cup pakistan cricket beat" | |
} | |
] | |
} | |
] | |
} | |
] | |
} | |
] | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!DOCTYPE html> | |
<meta charset="utf-8"> | |
<style> | |
.node { | |
font: 300 11px "Helvetica Neue", Helvetica, Arial, sans-serif; | |
fill: #bbb; | |
} | |
.node:hover { | |
fill: #000; | |
} | |
.link { | |
stroke: steelblue; | |
stroke-opacity: .4; | |
fill: none; | |
pointer-events: none; | |
} | |
.node:hover, | |
.node--source, | |
.node--target { | |
font-weight: 700; | |
} | |
.node--source { | |
fill: #2ca02c; | |
} | |
.node--target { | |
fill: #d62728; | |
} | |
.link--source, | |
.link--target { | |
stroke-opacity: 1; | |
stroke-width: 2px; | |
} | |
.link--source { | |
stroke: #d62728; | |
} | |
.link--target { | |
stroke: #2ca02c; | |
} | |
</style> | |
<body> | |
<script src="http://d3js.org/d3.v3.min.js"></script> | |
<script> | |
var diameter = 960, | |
radius = diameter / 2, | |
innerRadius = radius - 120; | |
var cluster = d3.layout.cluster() | |
.size([360, innerRadius]) | |
.sort(null) | |
.value(function(d) { return d.size; }); | |
var bundle = d3.layout.bundle(); | |
var line = d3.svg.line.radial() | |
.interpolate("bundle") | |
.tension(.85) | |
.radius(function(d) { return d.y; }) | |
.angle(function(d) { return d.x / 180 * Math.PI; }); | |
var svg = d3.select("body").append("svg") | |
.attr("width", diameter) | |
.attr("height", diameter) | |
.append("g") | |
.attr("transform", "translate(" + radius + "," + radius + ")"); | |
var link = svg.append("g").selectAll(".link"), | |
node = svg.append("g").selectAll(".node"); | |
d3.json("readme-flare-imports.json", function(error, classes) { | |
var nodes = cluster.nodes(packageHierarchy(classes)), | |
links = packageImports(nodes); | |
link = link | |
.data(bundle(links)) | |
.enter().append("path") | |
.each(function(d) { d.source = d[0], d.target = d[d.length - 1]; }) | |
.attr("class", "link") | |
.attr("d", line); | |
node = node | |
.data(nodes.filter(function(n) { return !n.children; })) | |
.enter().append("text") | |
.attr("class", "node") | |
.attr("dy", ".31em") | |
.attr("transform", function(d) { return "rotate(" + (d.x - 90) + ")translate(" + (d.y + 8) + ",0)" + (d.x < 180 ? "" : "rotate(180)"); }) | |
.style("text-anchor", function(d) { return d.x < 180 ? "start" : "end"; }) | |
.text(function(d) { return d.key; }) | |
.on("mouseover", mouseovered) | |
.on("mouseout", mouseouted); | |
}); | |
function mouseovered(d) { | |
node | |
.each(function(n) { n.target = n.source = false; }); | |
link | |
.classed("link--target", function(l) { if (l.target === d) return l.source.source = true; }) | |
.classed("link--source", function(l) { if (l.source === d) return l.target.target = true; }) | |
.filter(function(l) { return l.target === d || l.source === d; }) | |
.each(function() { this.parentNode.appendChild(this); }); | |
node | |
.classed("node--target", function(n) { return n.target; }) | |
.classed("node--source", function(n) { return n.source; }); | |
} | |
function mouseouted(d) { | |
link | |
.classed("link--target", false) | |
.classed("link--source", false); | |
node | |
.classed("node--target", false) | |
.classed("node--source", false); | |
} | |
d3.select(self.frameElement).style("height", diameter + "px"); | |
// Lazily construct the package hierarchy from class names. | |
function packageHierarchy(classes) { | |
var map = {}; | |
function find(name, data) { | |
var node = map[name], i; | |
if (!node) { | |
node = map[name] = data || {name: name, children: []}; | |
if (name.length) { | |
node.parent = find(name.substring(0, i = name.lastIndexOf("."))); | |
node.parent.children.push(node); | |
node.key = name.substring(i + 1); | |
} | |
} | |
return node; | |
} | |
classes.forEach(function(d) { | |
find(d.name, d); | |
}); | |
return map[""]; | |
} | |
// Return a list of imports for the given array of nodes. | |
function packageImports(nodes) { | |
var map = {}, | |
imports = []; | |
// Compute a map from name to node. | |
nodes.forEach(function(d) { | |
map[d.name] = d; | |
}); | |
// For each import, construct a link from the source to target node. | |
nodes.forEach(function(d) { | |
if (d.imports) d.imports.forEach(function(i) { | |
imports.push({source: map[d.name], target: map[i]}); | |
}); | |
}); | |
return imports; | |
} | |
</script> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment