Skip to content

Instantly share code, notes, and snippets.

@nickpeihl
Last active August 29, 2015 14:05
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nickpeihl/f1fae365f56fa3cad5d0 to your computer and use it in GitHub Desktop.
Save nickpeihl/f1fae365f56fa3cad5d0 to your computer and use it in GitHub Desktop.
San Juan County Political Contributions Visualized
{
"name": "2013 Contribution Totals",
"children" : [
{
"rID" : "0194b2d1d3db739c1ef2144a7754f890",
"name" : "WA ST NATL ORG FOR WOMEN PAC",
"year" : 2013,
"amount" : 10
},
{
"rID" : "03673039a81cf0dec816426987cdd2e0",
"name" : "SAWANT KSHAMA",
"year" : 2013,
"amount" : 60
},
{
"rID" : "03e91def26bb02a16b08304bb6a3b4ea",
"name" : "PHYSICIANS EYEPAC - WA ACADEMY OF EYE PHYSICIANS & SURGEONS",
"year" : 2013,
"amount" : 300
},
{
"rID" : "07a75263986088b7dea267dcb716fb12",
"name" : "FARMERS EMPLOYEES AND AGENTS PAC",
"year" : 2013,
"amount" : 220
},
{
"rID" : "07ce5e5b0b919e01bc2837d8cc9de21e",
"name" : "ANGEL JANICE E",
"year" : 2013,
"amount" : 2450
},
{
"rID" : "08d1ed490f8ff1c09edcbeea590377d8",
"name" : "SAN JUAN CO REPUB CENT COMM EXEMPT",
"year" : 2013,
"amount" : 3757
},
{
"rID" : "0a3cf243a4da78f2480a6ab0778d5e2f",
"name" : "CIT ALLIANCE FOR PROPERTY RIGHTS",
"year" : 2013,
"amount" : 115
},
{
"rID" : "0a90e52379287f98619491d9b348fd8e",
"name" : "INSLEE JAY R",
"year" : 2013,
"amount" : 100
},
{
"rID" : "0aabc061c72b4ac3b06568b60fcd5525",
"name" : "NORTHWEST MARINE TRADE ASSN PAC",
"year" : 2013,
"amount" : 65
},
{
"rID" : "0d6bd8797bbe3a7fd1c070cc0fc1efd4",
"name" : "BROWNE RUTHERFORD P",
"year" : 2013,
"amount" : 350
},
{
"rID" : "0d9e893599e61a49439745acb9a927c9",
"name" : "WHATCOM CO DEMO CENT COMM NON EXEMPT",
"year" : 2013,
"amount" : 350
},
{
"rID" : "0f8297b9e26cb9c8de9d6bd674c20c6a",
"name" : "MCCLERREN BRIAN D",
"year" : 2013,
"amount" : 2900
},
{
"rID" : "2f1ad7a180865f1d8fe2f3cd7fc5a71c",
"name" : "FOOD DEMOCRACY ACTION! YES ON I-522 COMM TO LABEL GMOS IN WA",
"year" : 2013,
"amount" : 137.2
},
{
"rID" : "2fca9ca4195d9103890fc89f3d0f5405",
"name" : "SNYDER JON B",
"year" : 2013,
"amount" : 100
},
{
"rID" : "3a2d5bb6f8a98695f7c9e95ce6b95333",
"name" : "WA FOOD INDUSTRY",
"year" : 2013,
"amount" : 290
},
{
"rID" : "3ae9b7f3b1c8fab093b3a6645e2af05e",
"name" : "YES ON I-522 COMM",
"year" : 2013,
"amount" : 1309.16
},
{
"rID" : "3cd6c4c62f6f69946be607bef7ba2017",
"name" : "WHATCOM COMMERCIAL FISHERMANS ASSN PAC",
"year" : 2013,
"amount" : 200
},
{
"rID" : "43eb2877084ff40c3553287b7c072590",
"name" : "MORRIS JEFFREY R",
"year" : 2013,
"amount" : 200
},
{
"rID" : "457c31dd4f9132174d699aae9f6e9126",
"name" : "TRUST ISLANDERS",
"year" : 2013,
"amount" : 17050
},
{
"rID" : "49f8b8c4c8316aaebd6976397678057e",
"name" : "LEWIS PETER B",
"year" : 2013,
"amount" : 50
},
{
"rID" : "4fd1b15fa02e57d4c764b05e53a8888d",
"name" : "WA ST VETERINARY MEDICAL ASSN WSVMA PAC",
"year" : 2013,
"amount" : 50
},
{
"rID" : "55f580c89574cbd210accd328fdac1a4",
"name" : "WA SENATE DEMO CAMP",
"year" : 2013,
"amount" : 700
},
{
"rID" : "58f05f289cd8ec264e0ab1ddaaa5269c",
"name" : "WEIMER CARL M",
"year" : 2013,
"amount" : 75
},
{
"rID" : "611ecd67f728a0eddf51471af88cb5be",
"name" : "BYERS ELISABETH C",
"year" : 2013,
"amount" : 2150
},
{
"rID" : "67e0f464dd31b2f60e9732e83fb281fe",
"name" : "WA RESTAURANT ASSN PAC",
"year" : 2013,
"amount" : 351
},
{
"rID" : "6959fda0e86535d98747cc36fa81d9ae",
"name" : "FIREFIGHTERS ACTION SUPPORT TEAM",
"year" : 2013,
"amount" : 36
},
{
"rID" : "71d2d9a9426ba688a05d807a351e8aa0",
"name" : "SEVERNS ROBERT T",
"year" : 2013,
"amount" : 200
},
{
"rID" : "74d7b9ea30c60315bf9890ea48868586",
"name" : "PLANNED PARENTHOOD VOTES WASHINGTON PAC",
"year" : 2013,
"amount" : 460
},
{
"rID" : "75b594f0698f2e3f433efe9bfebdae1a",
"name" : "JARMAN ROBERT N JR",
"year" : 2013,
"amount" : 14319.57
},
{
"rID" : "81b2379133e21f7d3c8b927196aa99cc",
"name" : "WA PILOTS ASSN PAC",
"year" : 2013,
"amount" : 50
},
{
"rID" : "8771e4a81b3ca591f96e3b64d9cbdb01",
"name" : "WA ALLIANCE FOR GUN RESPONSIBILITY",
"year" : 2013,
"amount" : 100
},
{
"rID" : "8bf8505333fc4de16e5341a14b6eab01",
"name" : "PRATT LOVEL",
"year" : 2013,
"amount" : 5273.93
},
{
"rID" : "8f8b6ebf810b46ee5487981e0bd6635f",
"name" : "HELP US HELP TAXPAYERS",
"year" : 2013,
"amount" : 400
},
{
"rID" : "989e8cce76a9874ab47adf18cb2e2e19",
"name" : "WA REALTORS PAC",
"year" : 2013,
"amount" : 135
},
{
"rID" : "9f7b4df4e5268daea69c1316eb6d298c",
"name" : "STOBER TY",
"year" : 2013,
"amount" : 200
},
{
"rID" : "a90325a5cae885b469e9ba1122ce4b70",
"name" : "WA ST DENTAL PAC",
"year" : 2013,
"amount" : 500
},
{
"rID" : "aa29349bbd9d0745650de1c59cd03603",
"name" : "WA LODGING ASSN PAC",
"year" : 2013,
"amount" : 50
},
{
"rID" : "ad65f06d35a4dea469c973d10c199f5d",
"name" : "SEATTLE FIREFIGHTERS UNION LOCAL 27 VOLUNTARY PAC",
"year" : 2013,
"amount" : 90
},
{
"rID" : "ae1517285f9ac3f639e3bfb1e742bc82",
"name" : "WA ST DEMO CENT COMM NON EXEMPT",
"year" : 2013,
"amount" : 285
},
{
"rID" : "b04b6b6dc3e1572df9c7e66fae180c56",
"name" : "ORGANIC CONSUMERS FUND COMM TO LABEL GMOS IN WA ST",
"year" : 2013,
"amount" : 135
},
{
"rID" : "b358eac0d67ed1e6c0424c79f260db6c",
"name" : "STEPHENS JAMES D JR",
"year" : 2013,
"amount" : 985
},
{
"rID" : "c7294631ab7bef4f8a7fe6da931f0c46",
"name" : "FORLENZA MARC A",
"year" : 2013,
"amount" : 4190
},
{
"rID" : "d95d101070a2ce838487040add10f3e7",
"name" : "WA EDUCATION ASSN PAC",
"year" : 2013,
"amount" : 149.5
},
{
"rID" : "de1dd55201aa271159ba1ea3bc53e8aa",
"name" : "WA HOSPITAL PAC",
"year" : 2013,
"amount" : 800
},
{
"rID" : "e25f0e712665359c119dcd40f589a671",
"name" : "AYERS GREGORY M",
"year" : 2013,
"amount" : 450
},
{
"rID" : "e534e78514947e727c32426dcc0a3c3f",
"name" : "BIG I PAC",
"year" : 2013,
"amount" : 75
},
{
"rID" : "ec0282b8e24a2b74b39a51c1b94c4ec9",
"name" : "HUGHES CHARLES (RICK) R II",
"year" : 2013,
"amount" : 1625
},
{
"rID" : "fc43af41f72a2c980ba924f5c5e6c34a",
"name" : "40TH LEG DIST DEMO NON EXEMPT",
"year" : 2013,
"amount" : 80
}
]
}
<!DOCTYPE html>
<meta charset="utf-8">
<style>
text {
font: 10px sans-serif;
}
</style>
<body>
<script src="http://d3js.org/d3.v3.min.js"></script>
<script>
var diameter = 960,
format = d3.format(",d"),
color = d3.scale.category20c();
var bubble = d3.layout.pack()
.sort(null)
.size([diameter, diameter])
.padding(1.5);
var svg = d3.select("body").append("svg")
.attr("width", diameter)
.attr("height", diameter)
.attr("class", "bubble");
d3.json("contributions_totals.json", function(error, root) {
var node = svg.selectAll(".node")
.data(bubble.nodes(classes(root)))
.enter().append("g")
.attr("class", "node")
.attr("transform", function(d) { return "translate(" + d.x + "," + d.y + ")"; });
node.append("title")
.text(function(d) { return d.className + ": " + format(d.value); });
node.append("circle")
.attr("r", function(d) { return d.r; })
.style("fill", function(d) { return color(d.packageName); });
node.append("text")
.attr("dy", ".3em")
.style("text-anchor", "middle")
.text(function(d) { return d.className.substring(0, d.r / 3); });
});
// Returns a flattened hierarchy containing all leaf nodes under the root.
function classes(root) {
var classes = [];
function recurse(name, node) {
if (node.children) node.children.forEach(function(child) { recurse(node.name, child); });
else classes.push({packageName: node.year, className: node.name, value: node.amount});
}
recurse(null, root);
return {children: classes};
}
d3.select(self.frameElement).style("height", diameter + "px");
</script>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment