Skip to content

Instantly share code, notes, and snippets.

@pa-w
Last active June 3, 2016 01:37
Show Gist options
  • Save pa-w/adb835b88fba1e35aed9f32ec05435fa to your computer and use it in GitHub Desktop.
Save pa-w/adb835b88fba1e35aed9f32ec05435fa to your computer and use it in GitHub Desktop.
Scatterplot

Based on Lisa Charlotte Rost's (@lisacrost) challenge.

country income health population
Central African Republic 599 53.8 4900274
Somalia 624 58.7 10787104
Burundi 777 60.4 11178921
Malawi 799 60.22 17215232
Congo, Dem. Rep. 809 58.3 77266814
Niger 943 62.2 19899120
Liberia 958 63.9 4503438
Eritrea 1129 62.9 5227791
Mozambique 1176 56.4 27977863
Guinea 1225 60.8 12608590
Guinea-Bissau 1386 53.4 1844325
North Korea 1390 71.4 25155317
Madagascar 1400 64.7 24235390
Togo 1433 64.23 7304578
Comoros 1472 64.1 788474
Ethiopia 1520 63.6 99390750
Rwanda 1549 66.53 11609666
Gambia 1644 65.1 1990924
Burkina Faso 1654 62.8 18105570
Uganda 1680 60.8 39032383
Mali 1684 57.6 17599694
Haiti 1710 65.3 10711067
Zimbabwe 1801 60.01 15602751
Kiribati 1824 62.4 112423
Benin 1830 65.5 10879829
Afghanistan 1925 57.63 32526562
Solomon Islands 2047 64.1 583591
Sierra Leone 2085 58.5 6453184
Timor-Leste 2086 72.4 1184765
Chad 2191 57.7 14037472
Senegal 2251 66.1 15129273
Nepal 2352 71.2 28513700
Papua New Guinea 2529 60.6 7619321
Tanzania 2571 63.43 53470420
Tajikistan 2582 71 8481855
Lesotho 2598 48.5 2135022
Cameroon 2897 59.5 23344179
Kenya 2898 66.63 46050302
Vanuatu 2912 65 264652
Sao Tome and Principe 3003 68.8 190344
South Sudan 3047 58 12339812
Djibouti 3139 64.63 887861
Bangladesh 3161 70.1 160995642
Kyrgyz Republic 3245 69 5939962
Cambodia 3267 68.4 15577899
Cote d'Ivoire 3491 60.33 22701556
Micronesia, Fed. Sts. 3510 67 104460
Marshall Islands 3661 65.1 52993
Mauritania 3877 65.7 4067564
Yemen 3887 67.6 26832215
Sudan 3975 69.5 40234882
Myanmar 4012 67.9 53897154
Zambia 4034 58.96 16211767
Ghana 4099 65.5 27409893
Honduras 4270 72.4 8075060
West Bank and Gaza 4319 75.2 4668466
Syria 4637 70.26 18502413
Nicaragua 4712 76.8 6082032
Pakistan 4743 66.5 188924874
Moldova 4896 72.7 4068897
Tonga 5069 70.5 106170
Lao 5212 66.4 6802023
Samoa 5558 72.2 193228
Uzbekistan 5598 70.1 29893488
Vietnam 5623 76.5 93447601
Nigeria 5727 61.33 182201962
India 5903 66.8 1311050527
Swaziland 6095 51.5 1286970
Congo, Rep. 6220 61.9 4620330
Bolivia 6295 72.3 10724705
Cape Verde 6514 74.6 520502
Guyana 6816 64.4 767085
Philippines 6876 70.2 100699395
Guatemala 7279 73.1 16342897
Morocco 7319 74.7 34377511
Georgia 7474 73.3 3999812
Angola 7615 61 25021974
Armenia 7763 74.4 3017712
El Salvador 7776 74.1 6126583
Fiji 7925 66.3 892145
Bhutan 7983 70.2 774830
Paraguay 8219 73.9 6639123
Ukraine 8449 72.1 44823765
Belize 8501 70 359287
Jamaica 8606 75.5 2793335
Bosnia and Herzegovina 9833 77.9 3810416
St. Lucia 9997 74.5 184999
Namibia 10040 61 2458830
St. Vincent and the Grenadines 10435 72.9 109462
Dominica 10503 74.6 72680
Indonesia 10504 70.9 257563815
Albania 10620 76 2896679
Sri Lanka 10624 76.5 20715010
Ecuador 10996 75.2 16144363
Egypt 11031 71.3 91508084
Tunisia 11126 77.3 11253554
Grenada 11593 71.7 106825
Jordan 11752 78.3 7594547
Mongolia 11819 65.3 2959134
Peru 11903 77.5 31376670
South Africa 12509 63.72 54490406
Macedonia, FYR 12547 77 2078453
Colombia 12761 75.8 48228704
Dominican Republic 12837 73.8 10528391
Serbia 12908 78.1 8850975
Barbados 12984 75.8 284215
China 13334 76.9 1376048943
Algeria 13434 76.5 39666519
Costa Rica 14132 80 4807850
Maldives 14408 79.5 363657
Thailand 14512 75.1 67959359
Iraq 14646 72.1 36423395
Montenegro 14833 75.8 625781
Brazil 15441 75.6 207847528
Iran 15573 78.5 79109272
Venezuela 15753 75.8 31108083
Turkmenistan 15865 67.9 5373502
Bulgaria 16371 74.9 7149787
Mexico 16850 74.5 127017224
Azerbaijan 16986 72.9 9753968
Lebanon 17050 78.5 5850743
Suriname 17125 70.5 542975
Botswana 17196 66.4 2262485
Libya 17261 76.2 6278438
Argentina 17344 76.2 43416755
Belarus 17415 70.4 9495826
Mauritius 18350 73.9 1273212
Gabon 18627 60.53 1725292
Romania 19203 76.8 19511324
Turkey 19360 76.5 78665830
Croatia 20260 78 4240317
Uruguay 20438 77.3 3431555
Panama 20485 78.2 3929141
Antigua and Barbuda 21049 75.2 91818
Cuba 21291 78.5 11389562
Chile 22465 79.3 17948141
Bahamas 22818 72.3 388019
Russia 23038 73.13 143456918
Latvia 23282 75.7 1970503
Kazakhstan 23468 68.2 17625226
Hungary 24200 76.2 9855023
Malaysia 24320 75.1 30331007
Poland 24787 77.3 38611794
Greece 25430 79.8 10954617
Seychelles 25684 73.7 96471
Portugal 26437 79.8 10349803
Lithuania 26665 75.4 2878405
Estonia 26812 76.8 1312558
Slovak Republic 27204 76.4 5426258
Slovenia 28550 80.2 2067526
Czech Republic 29437 78.6 10543186
Cyprus 29797 82.6 1165300
Trinidad and Tobago 30113 71.4 1360088
Malta 30265 82.1 418670
Equatorial Guinea 31087 60.63 845060
Israel 31590 82.4 8064036
Spain 32979 81.7 46121699
Italy 33297 82.1 59797685
New Zealand 34186 80.6 4528526
South Korea 34644 80.7 50293439
Japan 36162 83.5 126573481
France 37599 81.9 64395345
United Kingdom 38225 81.4 64715810
Finland 38923 80.8 5503457
Belgium 41240 80.4 11299192
Iceland 42182 82.8 329425
Canada 43294 81.7 35939927
Denmark 43495 80.1 5669081
Germany 44053 81.1 80688545
Australia 44056 81.8 23968973
Bahrain 44138 79.2 1377237
Austria 44401 81 8544586
Sweden 44892 82 9779426
Netherlands 45784 80.6 16924929
Andorra 46577 84.1 70473
Ireland 47758 80.4 4688465
Oman 48226 75.7 4490541
Saudi Arabia 52469 78.1 31540372
United States 53354 79.1 321773631
Switzerland 56118 82.9 8298663
United Arab Emirates 60749 76.6 9156963
Norway 64304 81.6 5210967
Brunei 73003 78.7 423188
Singapore 80794 82.1 5603740
Kuwait 82633 80.7 3892115
Luxembourg 88314 81.1 567110
Qatar 132877 82 2235355
<!DOCTYPE html>
<html lang="en-us">
<head>
<meta charset="UTF-8">
<title>World Explorer</title>
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1">
<script src="//dist.ant-project.com/jquery.min.js"></script>
<script src="//dist.ant-project.com/d3.min.js"></script>
<script src="//dist.ant-project.com/d3.geo.projection.v0.min.js"></script>
<script src="//dist.ant-project.com/queue.min.js"></script>
<script src="//dist.ant-project.com/topojson.js"></script>
<script src="//dist.ant-project.com/ant.js"></script>
<link rel="stylesheet" href="style.css"/>
</head>
<body>
<a data-onload id="download" data-download="data.csv" data-download_id="countries" data-download_processor="process" data-download_parse="#download_complete" data-debug="Start download"></a>
<a id="download_complete" data-control_chart="chart" data-quantify="countries" data-quantifier="country" data-debug="download complete"></a>
<div id="chart" data-chart="lines">
<div id="legend">
<table>
<tr><th>Country</th><td class="country_text"></td></tr>
<tr><th>Population</th><td class="population_text"></td></tr>
<tr><th>Health</th><td class="health_text"></td></tr>
<tr><th>Income</th><td class="income_text"></td></tr>
</table>
</div>
</div>
<script>
$(document).ready(function () {
var conf = {
prequantifiers: {
country: function (args) {
console.log (this.data.countries);
var extent = this.data.countries.extent (function (a) { return parseInt (a.values.income.value); });
return {
data: [{
"values": this.data.countries.items (),
"attrs": {
}
}],
scale: {
"x": d3.scale.pow ().exponent (.20).domain ([100, extent [1]]),
"y": d3.scale.linear ().domain ([90, 40]),
"pop": d3.scale.sqrt ().domain (this.data.countries.extent (function (a) { return parseInt (a.values.population.value); })).range ([2, 20])
}
}
}
},
quantifiers: {
lines: {
country: function (country, args, a, d) {
return {
"class": "country",
"x": a.scale.x (country.values.income.value),
"y": a.scale.y (country.values.health.value),
"r": a.scale.pop (country.values.population.value),
"data": {
"parse": [
{"control_element": "#legend", "element_show": true},
{"control_element": ".country_text", "element_text": country.values.country.value },
{"control_element": ".population_text", "element_text": country.values.population.value },
{"control_element": ".health_text", "element_text": country.values.health.value },
{"control_element": ".income_text", "element_text": country.values.income.value }
]
}
}
}
}
},
callbacks: {
process: function (rows, id) {
return new Nestify (rows, ["country"], ["country", "income", "health", "population"]).data;
}
}
};
new Ant (conf);
});
</script>
</body>
</html>
body {
width: 99vw;
height: 99vh;
margin: 0;
padding: 0;
}
#chart {
height: 80%;
}
.country {
fill: none;
}
.axis path {
display: none;
}
.axis text {
font-size: 0.3em;
}
.axis line {
stroke: #777;
stroke-dasharray: 1,1;
}
circle.country {
stroke: black;
fill: rgba(0,0,0,0.2) ;
}
#legend {
display: none;
position: absolute;
left: 10%;
height: 65px;
width: 120px;
background-color: white;
border: 1px solid gray;
font-size: 0.4em;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment