[ Launch: Countries GDP/growth (opacity) ] e87d7188fa63f4e76f31 by poezn
[ Launch: Force Countries ] 4341604f51fda6e6ce1f by poezn
/_.md
Created
June 27, 2014 19:00
Countries GDP/growth (opacity)
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
{"description":"Countries GDP/growth (opacity)","endpoint":"","display":"svg","public":true,"require":[],"fileconfigs":{"inlet.js":{"default":true,"vim":false,"emacs":false,"fontSize":12},"country_codes.json":{"default":true,"vim":false,"emacs":false,"fontSize":12},"_.md":{"default":true,"vim":false,"emacs":false,"fontSize":12},"config.json":{"default":true,"vim":false,"emacs":false,"fontSize":12},"geo.json":{"default":true,"vim":false,"emacs":false,"fontSize":12},"data.tsv":{"default":true,"vim":false,"emacs":false,"fontSize":12}},"fullscreen":false,"play":true,"loop":false,"restart":false,"autoinit":true,"pause":true,"loop_type":"pingpong","bv":false,"nclones":15,"clone_opacity":0.4,"duration":3000,"ease":"linear","dt":0.01,"ajax-caching":true,"inline-console":true,"thumbnail":"http://i.imgur.com/OMH2HWU.png"} |
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
{"ad":[42.5000,1.5000],"ae":[24.0000,54.0000],"af":[33.0000,65.0000],"ag":[17.0500,-61.8000],"ai":[18.2500,-63.1667],"al":[41.0000,20.0000],"am":[40.0000,45.0000],"an":[12.2500,-68.7500],"ao":[-12.5000,18.5000],"ap":[35.0000,105.0000],"aq":[-90.0000,0.0000],"ar":[-34.0000,-64.0000],"as":[-14.3333,-170.0000],"at":[47.3333,13.3333],"au":[-27.0000,133.0000],"aw":[12.5000,-69.9667],"az":[40.5000,47.5000],"ba":[44.0000,18.0000],"bb":[13.1667,-59.5333],"bd":[24.0000,90.0000],"be":[50.8333,4.0000],"bf":[13.0000,-2.0000],"bg":[43.0000,25.0000],"bh":[26.0000,50.5500],"bi":[-3.5000,30.0000],"bj":[9.5000,2.2500],"bm":[32.3333,-64.7500],"bn":[4.5000,114.6667],"bo":[-17.0000,-65.0000],"br":[-10.0000,-55.0000],"bs":[24.2500,-76.0000],"bt":[27.5000,90.5000],"bv":[-54.4333,3.4000],"bw":[-22.0000,24.0000],"by":[53.0000,28.0000],"bz":[17.2500,-88.7500],"ca":[60.0000,-95.0000],"cc":[-12.5000,96.8333],"cd":[0.0000,25.0000],"cf":[7.0000,21.0000],"cg":[-1.0000,15.0000],"ch":[47.0000,8.0000],"ci":[8.0000,-5.0000],"ck":[-21.2333,-159.7667],"cl":[-30.0000,-71.0000],"cm":[6.0000,12.0000],"cn":[35.0000,105.0000],"co":[4.0000,-72.0000],"cr":[10.0000,-84.0000],"cu":[21.5000,-80.0000],"cv":[16.0000,-24.0000],"cx":[-10.5000,105.6667],"cy":[35.0000,33.0000],"cz":[49.7500,15.5000],"de":[51.0000,9.0000],"dj":[11.5000,43.0000],"dk":[56.0000,10.0000],"dm":[15.4167,-61.3333],"do":[19.0000,-70.6667],"dz":[28.0000,3.0000],"ec":[-2.0000,-77.5000],"ee":[59.0000,26.0000],"eg":[27.0000,30.0000],"eh":[24.5000,-13.0000],"er":[15.0000,39.0000],"es":[40.0000,-4.0000],"et":[8.0000,38.0000],"eu":[47.0000,8.0000],"fi":[64.0000,26.0000],"fj":[-18.0000,175.0000],"fk":[-51.7500,-59.0000],"fm":[6.9167,158.2500],"fo":[62.0000,-7.0000],"fr":[46.0000,2.0000],"ga":[-1.0000,11.7500],"gb":[54.0000,-2.0000],"gd":[12.1167,-61.6667],"ge":[42.0000,43.5000],"gf":[4.0000,-53.0000],"gh":[8.0000,-2.0000],"gi":[36.1833,-5.3667],"gl":[72.0000,-40.0000],"gm":[13.4667,-16.5667],"gn":[11.0000,-10.0000],"gp":[16.2500,-61.5833],"gq":[2.0000,10.0000],"gr":[39.0000,22.0000],"gs":[-54.5000,-37.0000],"gt":[15.5000,-90.2500],"gu":[13.4667,144.7833],"gw":[12.0000,-15.0000],"gy":[5.0000,-59.0000],"hk":[22.2500,114.1667],"hm":[-53.1000,72.5167],"hn":[15.0000,-86.5000],"hr":[45.1667,15.5000],"ht":[19.0000,-72.4167],"hu":[47.0000,20.0000],"id":[-5.0000,120.0000],"ie":[53.0000,-8.0000],"il":[31.5000,34.7500],"in":[20.0000,77.0000],"io":[-6.0000,71.5000],"iq":[33.0000,44.0000],"ir":[32.0000,53.0000],"is":[65.0000,-18.0000],"it":[42.8333,12.8333],"jm":[18.2500,-77.5000],"jo":[31.0000,36.0000],"jp":[36.0000,138.0000],"ke":[1.0000,38.0000],"kg":[41.0000,75.0000],"kh":[13.0000,105.0000],"ki":[1.4167,173.0000],"km":[-12.1667,44.2500],"kn":[17.3333,-62.7500],"kp":[40.0000,127.0000],"kr":[37.0000,127.5000],"kw":[29.3375,47.6581],"ky":[19.5000,-80.5000],"kz":[48.0000,68.0000],"la":[18.0000,105.0000],"lb":[33.8333,35.8333],"lc":[13.8833,-61.1333],"li":[47.1667,9.5333],"lk":[7.0000,81.0000],"lr":[6.5000,-9.5000],"ls":[-29.5000,28.5000],"lt":[56.0000,24.0000],"lu":[49.7500,6.1667],"lv":[57.0000,25.0000],"ly":[25.0000,17.0000],"ma":[32.0000,-5.0000],"mc":[43.7333,7.4000],"md":[47.0000,29.0000],"me":[42.0000,19.0000],"mg":[-20.0000,47.0000],"mh":[9.0000,168.0000],"mk":[41.8333,22.0000],"ml":[17.0000,-4.0000],"mm":[22.0000,98.0000],"mn":[46.0000,105.0000],"mo":[22.1667,113.5500],"mp":[15.2000,145.7500],"mq":[14.6667,-61.0000],"mr":[20.0000,-12.0000],"ms":[16.7500,-62.2000],"mt":[35.8333,14.5833],"mu":[-20.2833,57.5500],"mv":[3.2500,73.0000],"mw":[-13.5000,34.0000],"mx":[23.0000,-102.0000],"my":[2.5000,112.5000],"mz":[-18.2500,35.0000],"na":[-22.0000,17.0000],"nc":[-21.5000,165.5000],"ne":[16.0000,8.0000],"nf":[-29.0333,167.9500],"ng":[10.0000,8.0000],"ni":[13.0000,-85.0000],"nl":[52.5000,5.7500],"no":[62.0000,10.0000],"np":[28.0000,84.0000],"nr":[-0.5333,166.9167],"nu":[-19.0333,-169.8667],"nz":[-41.0000,174.0000],"om":[21.0000,57.0000],"pa":[9.0000,-80.0000],"pe":[-10.0000,-76.0000],"pf":[-15.0000,-140.0000],"pg":[-6.0000,147.0000],"ph":[13.0000,122.0000],"pk":[30.0000,70.0000],"pl":[52.0000,20.0000],"pm":[46.8333,-56.3333],"pr":[18.2500,-66.5000],"ps":[32.0000,35.2500],"pt":[39.5000,-8.0000],"pw":[7.5000,134.5000],"py":[-23.0000,-58.0000],"qa":[25.5000,51.2500],"re":[-21.1000,55.6000],"ro":[46.0000,25.0000],"rs":[44.0000,21.0000],"ru":[60.0000,100.0000],"rw":[-2.0000,30.0000],"sa":[25.0000,45.0000],"sb":[-8.0000,159.0000],"sc":[-4.5833,55.6667],"sd":[15.0000,30.0000],"se":[62.0000,15.0000],"sg":[1.3667,103.8000],"sh":[-15.9333,-5.7000],"si":[46.0000,15.0000],"sj":[78.0000,20.0000],"sk":[48.6667,19.5000],"sl":[8.5000,-11.5000],"sm":[43.7667,12.4167],"sn":[14.0000,-14.0000],"so":[10.0000,49.0000],"sr":[4.0000,-56.0000],"st":[1.0000,7.0000],"sv":[13.8333,-88.9167],"sy":[35.0000,38.0000],"sz":[-26.5000,31.5000],"tc":[21.7500,-71.5833],"td":[15.0000,19.0000],"tf":[-43.0000,67.0000],"tg":[8.0000,1.1667],"th":[15.0000,100.0000],"tj":[39.0000,71.0000],"tk":[-9.0000,-172.0000],"tm":[40.0000,60.0000],"tn":[34.0000,9.0000],"to":[-20.0000,-175.0000],"tr":[39.0000,35.0000],"tt":[11.0000,-61.0000],"tv":[-8.0000,178.0000],"tw":[23.5000,121.0000],"tz":[-6.0000,35.0000],"ua":[49.0000,32.0000],"ug":[1.0000,32.0000],"um":[19.2833,166.6000],"us":[38.0000,-97.0000],"uy":[-33.0000,-56.0000],"uz":[41.0000,64.0000],"va":[41.9000,12.4500],"vc":[13.2500,-61.2000],"ve":[8.0000,-66.0000],"vg":[18.5000,-64.5000],"vi":[18.3333,-64.8333],"vn":[16.0000,106.0000],"vu":[-16.0000,167.0000],"wf":[-13.3000,-176.2000],"ws":[-13.5833,-172.3333],"ye":[15.0000,48.0000],"yt":[-12.8333,45.1667],"za":[-29.0000,24.0000],"zm":[-15.0000,30.0000],"zw":[-20.0000,30.0000]} |
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
id | country | growth | gdp | key | |
---|---|---|---|---|---|
43 | Albania | 0.0160 | 4000 | al | |
138 | Austria | 0.0087 | 46792 | at | |
493 | Belarus | 0.0150 | 6685 | by | |
305 | Belgium | -0.0014 | 43399 | be | |
236 | Bosnia and Herzegovina | -0.0070 | 4556 | ba | |
362 | Bulgaria | 0.0080 | 6977 | bg | |
1458 | Croatia | -0.0198 | 13879 | hr | |
757 | Czech Republic | -0.0102 | 18690 | cz | |
781 | Denmark | -0.0036 | 56364 | dk | |
899 | Estonia | 0.0394 | 16833 | ee | |
1024 | Finland | -0.0083 | 45694 | fi | |
1038 | France | 0.0001 | 39746 | fr | |
758 | Germany | 0.0069 | 42597 | de | |
1339 | Greece | -0.0637 | 22442 | gr | |
1488 | Hungary | -0.0170 | 12560 | hu | |
1686 | Iceland | 0.0140 | 42339 | is | |
1564 | Ireland | 0.0016 | 45921 | ie | |
1687 | Italy | -0.0253 | 33816 | it | |
2079 | Latvia | 0.0500 | 13947 | lv | |
2067 | Lithuania | 0.0370 | 14172 | lt | |
2078 | Luxembourg | -0.0018 | 103858 | lu | |
2263 | Macedonia | -0.0027 | 4565 | mk | |
2330 | Malta | 0.0100 | 20839 | mt | |
2180 | Moldova | -0.0080 | 2038 | md | |
3889 | Montenegro | -0.0055 | 7041 | mc | |
2536 | Netherlands | -0.0125 | 45960 | nl | |
2549 | Norway | 0.0290 | 99636 | no | |
2742 | Poland | 0.0182 | 12710 | pl | |
2798 | Portugal | -0.0323 | 20175 | pt | |
2859 | Romania | 0.0035 | 8437 | ro | |
2901 | Russian Federation | 0.0344 | 14037 | ru | |
3888 | Serbia | -0.0170 | 5190 | rs | |
3096 | Slovakia | 0.0180 | 16893 | sk | |
3082 | Slovenia | -0.0250 | 22059 | si | |
950 | Spain | -0.0164 | 28274 | es | |
3055 | Sweden | 0.0093 | 55040 | se | |
553 | Switzerland | 0.0105 | 78928 | ch | |
3478 | Ukraine | 0.0020 | 3867 | ua | |
1144 | United Kingdom | 0.0025 | 38920 | gb |
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
var countryCodes = tb.country_codes; | |
var geo = tb.geo; | |
var data = {}; | |
_.each(tb.data, function(d, i) { | |
data[d.key] = { value: +d.gdp, growth: +d.growth, country: d.country} | |
}); | |
var width = 960, | |
height = 500; | |
var rScale = d3.scale.sqrt() | |
.domain([0, d3.max(tb.data, function(d, i) { return d.gdp })]) | |
.range([0, 35]); | |
var colorGrowth = "#efdd8e"; | |
var duration = 0.5; | |
var scaleFillOpacity = d3.scale.linear() | |
.domain([0, d3.max(tb.data, function(d, i) { return d.growth })]) | |
.range([0, 1]) | |
var scaleRingSize = d3.scale.linear() | |
.domain([0, duration]) | |
.range([0, 20]) | |
var timeScaleOpacity = d3.scale.linear() | |
.domain([0, duration]) | |
.range([1, 0.4]) | |
var projection = d3.geo.equirectangular() | |
.scale(500) | |
.translate([419, 671]) | |
var foci = {}; | |
_.each(countryCodes, function(coords, code) { | |
foci[code] = projection([coords[1], coords[0]]); | |
}); | |
var path = d3.geo.path() | |
.projection(projection); | |
var nodes = _.chain(countryCodes) | |
.map(function(d, key) { | |
return { | |
label: data[key] ? data[key].country : null, | |
id: key, | |
x: foci[key][0], | |
y: foci[key][1], | |
growth: data[key] ? data[key].growth : null, | |
value: data[key] ? data[key].value : null, | |
radius: rScale(data[key] ? data[key].value : 0) | |
} | |
}) | |
.filter(function(d, i) { | |
//return true; | |
return ["al","at","by","be","ba","bg","hr","cz","dk","ee","fi","fr","de","gr","hu","is","ie","it","lv","lt","lu","mk","mt","md","mc","nl","no","pl","pt","ro","ru","rs","sk","si","es","se","ch","ua","gb"].indexOf(d.id) >= 0; | |
}) | |
.value(); | |
g.selectAll("path") | |
.data(geo.features) | |
.enter().append("path") | |
.attr({ | |
"d": path, | |
"id": function(d) { return d.id} , | |
"fill": "#888888" | |
}); | |
var node = g.selectAll("g.node"); | |
function tick(e) { | |
var k = 0.1 * e.alpha; | |
// Push nodes toward their designated focus. | |
_.each(nodes, function(o, i) { | |
o.y += (foci[o.id][1] - o.y) * k; | |
o.x += (foci[o.id][0] - o.x) * k; | |
o.coords = [o.x, o.y] | |
}); | |
_.each(nodes, collide(0.5)); | |
node.attr("transform", function(d) { return "translate(" + [d.x, d.y].join(" ") + ")"; }) | |
} | |
var padding = 1.5, // separation between same-color circles | |
clusterPadding = 9, // separation between different-color circles | |
maxRadius = 11; | |
// Resolves collisions between d and all other circles. | |
function collide(alpha) { | |
var quadtree = d3.geom.quadtree(nodes); | |
return function(d) { | |
var r = d.radius + maxRadius + Math.max(padding, clusterPadding), | |
nx1 = d.x - r, | |
nx2 = d.x + r, | |
ny1 = d.y - r, | |
ny2 = d.y + r; | |
quadtree.visit(function(quad, x1, y1, x2, y2) { | |
if (quad.point && (quad.point !== d)) { | |
var x = d.x - quad.point.x, | |
y = d.y - quad.point.y, | |
l = Math.sqrt(x * x + y * y), | |
r = d.radius + quad.point.radius + (d.cluster === quad.point.cluster ? padding : clusterPadding); | |
if (l < r) { | |
l = (l - r) / l * alpha; | |
d.x -= x *= l; | |
d.y -= y *= l; | |
quad.point.x += x; | |
quad.point.y += y; | |
} | |
} | |
return x1 > nx2 || x2 < nx1 || y1 > ny2 || y2 < ny1; | |
}); | |
}; | |
} | |
var force = d3.layout.force() | |
.nodes(nodes) | |
.links([]) | |
.gravity(0) | |
.charge(function(d, i) { | |
return -d.value / 5819 | |
}) | |
.linkDistance(function(d, i) { | |
return rScale(d.value) | |
}) | |
.on("tick", tick); | |
tributary.init = function(g) { | |
node = node.data(nodes); | |
var bubbles = node.enter().append("g") | |
.attr({ | |
"class": "node", | |
"id": function(d) { return "bubble-" + d.label }, | |
"transform": function(d) { | |
return "translate(" + [d.tx, d.ty].join(" ") + ")" | |
} | |
}) | |
.call(force.drag); | |
bubbles | |
.append("circle") | |
.attr({ | |
"class": "ripple", | |
"cx": 0, | |
"cy": 0, | |
"r": function(d, i) { | |
return rScale(d.value); | |
}, | |
"fill": colorGrowth, | |
"fill-opacity": function(d) { | |
return scaleFillOpacity(d.growth) | |
} | |
}) | |
bubbles | |
.append("circle") | |
.attr({ | |
"class": "bubble", | |
"cx": 0, | |
"cy": 0, | |
"r": function(d, i) { | |
return rScale(d.value); | |
} | |
}); | |
bubbles | |
.append("text") | |
.attr({ | |
"text-anchor": "middle", | |
"transform": function(d, i) { | |
var ty = rScale(d.weight) / 2, | |
tx = 0; | |
return "translate(" + [tx, ty].join(" ") + ")" | |
}, | |
"fill": "#FFF", | |
"font-size": "10" | |
}) | |
.text(function(d, i) { | |
return d.label.substring(0, rScale(d.value) / 3) | |
}); | |
force.start(); | |
} | |
tributary.run = function(g, t) { | |
var factor = t % duration | |
g.selectAll("circle.ripple") | |
.filter(function(d) { | |
return d.growth > 0; | |
}) | |
.attr({ | |
"r": function(d) { | |
return d.radius + scaleRingSize(factor) | |
}, | |
"opacity": function(d) { | |
return timeScaleOpacity(factor) | |
} | |
}) | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment