Skip to content

Instantly share code, notes, and snippets.

@andreaderrico2
Last active November 8, 2019 06:40
Show Gist options
  • Save andreaderrico2/2d341107f93d618e5ef4 to your computer and use it in GitHub Desktop.
Save andreaderrico2/2d341107f93d618e5ef4 to your computer and use it in GitHub Desktop.
Visual Analytics Exam

Visual Analytics Exam

Data here: http://hdr.undp.org/en/content/human-development-index-hdi

link utili http://www.b-eye-network.com/view/3355

http://charliepark.org/slopegraphs/

Legend:

GNI: Gross national income, the total domestic and foreign output claimed by residents of a country, consisting of gross domestic product (GDP), plus factor incomes earned by foreign residents

HDI: Human Development Index, is a composite statistic (composite index) of life expectancy, education, and per capita income indicators, which are used to rank countries into four tiers of human development.

LIFE: Life expectancy at birth

body {
font: 12px sans-serif;
margin: 0;
padding: 0;
}
.diagonal {
stroke-width: 0.5;
stroke: black;
}
.dot {
opacity: 0.7;
stroke: transparent;
stroke-width: 4;
}
.dot:hover {
opacity: 1;
}
.axis path,
.axis line {
fill: none;
stroke: #CCC;
shape-rendering: crispEdges;
}
.tick, .legend {
font: 10px sans-serif;
}
.line {
stroke-width: 0.5;
opacity: 0.7;
pointer-events: none;
}
.line:hover {
}
.line.highlighted {
stroke-width: 2;
opacity: 1;
}
.dot.highlighted {
opacity: 1;
r: 4;
}
.text.highlighted {
opacity: 1;
}
.select_countries {
position: fixed;
top: 5px;
left: 10px;
}
.selected_country {
position: fixed;
bottom: 20px;
left: 160px;
}
.select_aspect {
position: fixed;
top: 5px;
left: 400px;
}
.legend {
opacity: 0.6;
cursor: pointer;
position: fixed;
}
.legend rect {
stroke: black;
}
.legend:hover {
opacity: 1;
}
.selected {
opacity: 1;
stroke-width: 2;
r: 4;
}
.transparent {
stroke-width: 4;
opacity: 0;
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Visual Analytics Exam</title>
<script src="http://d3js.org/d3.v3.min.js"></script>
<link href="index.css" rel="stylesheet" type="text/css">
</head>
<body onload="myBrowser()">
<svg width="960px" height="500px"></svg>
<script src="index.js"></script>
</body>
</html>
var svg = d3.select('svg');
var first = true;
var global_data;
var selected_aspect = 'GNI';
var continent_color = d3.scale.ordinal()
.domain(['Oceania','Europe','America','Asia','Africa','World'])
.range(["#1F77B4","#FF7F0E","#2CA02C","#D62728","#8C564B","#fff"]);
// header
var header = svg.append('rect')
.attr({
width: 960,
height: 30,
fill: 'lightgrey'
});
// scatterplot
var scatterplot_W = 400;
var scatterplot = svg.append('g')
.attr({
transform: 'translate(500,55)'
});
var legend = svg.selectAll('.legend')
.data(continent_color.domain())
.enter().append('g')
.attr('class', 'legend')
.attr('transform', function(d, i) { return 'translate(' + ((i*65)+220) + ', 8)'; })
.on('click', function(d){
d3.selectAll('.legend').classed("selected", false);
d3.select(this).classed("selected", true);
draw_charts(global_data, d, selected_aspect)
});
legend.append('rect')
.attr('x', scatterplot_W - 12)
.attr('width', 12)
.attr('height', 12)
.style('fill', continent_color);
legend.append('text')
.attr('x', scatterplot_W - 18)
.attr('y', 6)
.attr('dy', '.35em')
.style('text-anchor', 'end')
.text(function(d) { return d; });
var scatter_GNI = d3.scale.linear()
.range([scatterplot_W,0]);
var scatter_selected_aspect = d3.scale.linear()
.range([scatterplot_W,0]);
var scatter_HDI = d3.scale.linear()
.range([0,scatterplot_W]);
// slopegraph
var D = 350;
var slopegraph = svg.append('g')
.attr({
transform: 'translate(40,55)'
});
var slopegraph_selected_aspect = d3.scale.linear()
.range([scatterplot_W,0]);
var slopegraph_HDI = d3.scale.linear()
.range([scatterplot_W,0]);
var select_countries = d3.select("body").append("div")
.attr("class","select_countries")
.append("select")
var select_aspect = d3.select("body").append("div")
.attr("class","select_aspect")
.append("select")
select_aspect.append('option')
.text('GNI')
.attr('value','GNI')
select_aspect.append('option')
.text('LIFE')
.attr('value','LIFE')
slopegraph.append('line')
.attr({
x1: 0,
y1: 0,
x2: 0,
y2: scatterplot_W,
stroke: '#CCC'
});
slopegraph.append('line')
.attr({
x1: D,
y1: 0,
x2: D,
y2: scatterplot_W,
stroke: '#CCC'
});
select_countries.on('input', function(){
select(this.value); });
select_aspect.on('input', function(){
d3.selectAll('.legend').classed('selected', false)
draw_charts(global_data, "World", this.value)
selected_aspect = this.value
});
d3.csv('visual_analytics.csv', function(data) {
data.forEach(function(d){
d.HDI_value = +(d.HDI_value).replace(',','.');
d.GNI_value = +(d.GNI_value).replace(',','.');
d.LIFE_value = +(d.LIFE_value).replace(',','.');
});
global_data = data;
draw_charts(data, "World", selected_aspect)
});
function draw_charts(data, continent, selected_aspect) {
console.log(data)
select("");
select_countries.node().value = "Select country";
legend.selectAll('.legend rect')
.classed('selected', function(d){ return d == continent });
scatter_HDI
.domain([d3.min(data, function(d){ return d.HDI_value; }), d3.max(data, function(d){ return d.HDI_value; })]);
scatter_selected_aspect
.domain([d3.min(data, function(d){ return d[selected_aspect + '_value']; }), d3.max(data, function(d){ return d[selected_aspect + '_value']; })]);
slopegraph_HDI
.domain([d3.min(data, function(d){ return d.HDI_value; }), d3.max(data, function(d){ return d.HDI_value; })]);
slopegraph_selected_aspect
.domain([d3.min(data, function(d){return d[selected_aspect + '_value']; }), d3.max(data, function(d){ return d[selected_aspect + '_value']; })]);
d3.selectAll('.title').remove();
var title_selected_aspect = slopegraph.append('text')
.attr({
class: 'title',
x: 0,
y: 415,
})
.text(selected_aspect);
var title_HDI = slopegraph.append('text')
.attr({
class: 'title',
x: D-20,
y: 415,
})
.text('HDI');
// Axes
var axis_scatter_GNI = d3.svg.axis()
.scale(scatter_selected_aspect)
.orient('left')
.tickFormat(d3.format('s'));
d3.selectAll('.axis').remove();
scatterplot.append('g')
.attr('class', 'y axis')
.call(axis_scatter_GNI)
.append('text')
.attr('class', 'label')
.attr('transform', 'rotate(-90)')
.attr('y', 6)
.attr('dy', '.71em')
.style('text-anchor', 'end')
.text(function (d) {
if (selected_aspect == "GNI") {
return selected_aspect +' ($)'
} else {
return selected_aspect +' (years)'
}
});
var axis_scatter_HDI = d3.svg.axis()
.scale(scatter_HDI)
.orient('bottom');
scatterplot.append('g')
.attr('class', 'x axis')
.attr('transform', 'translate(0,' + scatterplot_W + ')')
.call(axis_scatter_HDI)
.append('text')
.attr('class', 'label')
.attr('x', scatterplot_W)
.attr('y', -6)
.style('text-anchor', 'end')
.text('HDI');
if (continent == "World") {
data = data
} else {
data = data.filter(function(d) { return d.Continent == continent; });
};
// dots
dots = scatterplot.selectAll('.dot')
.data(data, function(d) {
return d.Country;
});
var enter_dots = dots.enter().append('circle')
.attr({
class: 'dot',
r: 2,
fill: function(d) { return continent_color(d.Continent); }
})
.on('mouseover', function(d){
highlight(d.Country);
})
.on('mouseout', function(d){
highlight("");
})
.on('click', function(d){
select(d.Country);
});
enter_dots.append('title');
dots.select('title')
.text(function(d){ return d.Country + '\nHDI ' + d.HDI_value + '\n' + selected_aspect + ' ' + (d[selected_aspect + '_value']) +''; });
dots.transition(1000)
.attr({
cx: function(d) { return scatter_HDI(d.HDI_value); },
cy: function(d) { console.log(selected_aspect); return scatter_selected_aspect(d[selected_aspect + '_value']); },
})
dots.exit().remove();
var lines_transparent = slopegraph.selectAll('.transparent')
.data(data, function(d) { return d.Country; });
var enter_lines_transparent = lines_transparent.enter().append('line')
.attr({
class: 'transparent',
x1: 0,
x2: D
});
lines_transparent.append('title');
lines_transparent.select('title')
.text(function(d){ return d.Country + '\nHDI ' + d.HDI_value + '\n' + selected_aspect + ' ' + (d[selected_aspect + '_value']) +''; });
lines_transparent
.attr({
y1: function(d){ return slopegraph_selected_aspect(d[selected_aspect + '_value']); },
y2: function(d){ return slopegraph_HDI(d.HDI_value);},
stroke: function(d){ return continent_color(d.Continent); }
})
.on('mouseover', function(d){
highlight(d.Country);
})
.on('mouseout', function(d){
highlight("");
})
.on('click', function(d){
select(d.Country);
});
lines_transparent.exit().remove();
// slopegraph
// lines
var lines = slopegraph.selectAll('.line')
.data(data, function(d) { return d.Country });
var enter_lines = lines.enter().append('line')
.attr({
class: 'line',
x1: 0,
x2: D
})
enter_lines.append('title')
.text(function(d){ return d.Country + '\nHDI ' + d.HDI_value + '\n' + selected_aspect + ' ' + (d[selected_aspect + '_value']) +''; });
lines.transition(1000)
.attr({
y1: function(d){ return slopegraph_selected_aspect(d[selected_aspect + '_value']); },
y2: function(d){ return slopegraph_HDI(d.HDI_value);},
stroke: function(d){ return continent_color(d.Continent); }
});
lines.exit().remove();
var text_HDI = slopegraph.selectAll(".text_HDI")
.data(data);
var text_HDI_enter = text_HDI.enter().append("text")
.attr("class","text text_HDI")
.attr("x", D+3)
.attr("font-family", "sans-serif")
.attr("font-size", "9px")
.attr('opacity',0)
text_HDI
.attr("y", function(d) { return slopegraph_HDI(d.HDI_value);})
.text(function(d){ return d["HDI_value"]; });
var text_selected_aspect = slopegraph.selectAll(".text_selected_aspect")
.data(data);
var text_selected_aspect_enter = text_HDI.enter().append("text")
.attr("class","text text_selected_aspect")
.attr("x", -5)
.attr("font-family", "sans-serif")
.attr("font-size", "9px")
.attr('text-anchor', 'end')
.attr('opacity',0)
.attr("y", function(d) { return slopegraph_selected_aspect(d[selected_aspect + '_value']);})
.text(function(d){ return d[selected_aspect + '_value']; });
text_selected_aspect
.attr("y", function(d) { return slopegraph_selected_aspect(d[selected_aspect + '_value']);})
.text(function(d){ return d[selected_aspect + '_value']; });
option_countries = select_countries.selectAll("option")
.data([{ Country:'Select country' }].concat(data.sort(function(a,b){
if (a.Country > b.Country) {
return 1
} else {
return -1
}
})));
enter_select = option_countries.enter()
.append("option");
option_countries
.attr("value", function(d){ return d.Country; })
.text(function(d){ return d.Country; });
option_countries.exit().remove();
}
function highlight(what) {
scatterplot.selectAll('.dot') // cambia nome a sta cosa! :D
.classed('highlighted', function(d){ return d.Country == what;});
slopegraph.selectAll('.line') // cambia nome a sta cosa! :D
.classed('highlighted', function(d){ return d.Country == what;});
slopegraph.selectAll('.text_HDI')
.classed('highlighted', function(d){ return d.Country == what;});
slopegraph.selectAll('.text_selected_aspect')
.classed('highlighted', function(d){ return d.Country == what;});
}
function select(what) {
scatterplot.selectAll('.dot') // cambia nome a sta cosa! :D
.classed('selected', function(d){ return d.Country == what; });
slopegraph.selectAll('.line') // cambia nome a sta cosa! :D
.classed('selected', function(d){ return d.Country == what; });
slopegraph.selectAll('.text_HDI')
.classed('selected', function(d){ return d.Country == what; });
slopegraph.selectAll('.text_selected_aspect')
.classed('selected', function(d){ return d.Country == what; });
select_countries.node().value = what;
}
function myBrowser() {
if(navigator.userAgent.indexOf("Chrome") != -1 )
{
} else {
alert('Si consiglia l\'utilizzo di Google Chrome per la visualizzazione della pagina');
}
}
Country HDI_rank GNI_rank HDI_value GNI_value LIFE_value LIFE_rank Continent
Japan 17 24 0,890 36747 83,6 1 Asia
Korea (Republic of) 15 33 0,891 30345 83,4 2 Asia
Switzerland 3 9 0,917 53762 82,6 3 Europe
Australia 2 20 0,933 41524 82,5 4 Oceania
Italy 26 29 0,872 32669 82,4 5 Europe
Singapore 9 4 0,901 72371 82,3 6 Asia
Spain 27 32 0,869 30561 82,1 7 Europe
Iceland 13 26 0,895 35116 82,1 8 Europe
Sweden 12 13 0,898 43201 81,8 9 Europe
France 20 25 0,884 36629 81,8 10 Europe
Israel 19 34 0,888 29966 81,8 11 Asia
Hong Kong, China (SAR) 16 10 0,891 52383 81,5 12 Asia
Norway 1 6 0,944 63909 81,5 13 Europe
Canada 8 19 0,902 41887 81,5 14 America
Slovakia 37 38 0,830 25336 81,2 15 Europe
Belgium 21 22 0,881 39471 81,1 16 Europe
New Zealand 7 30 0,910 32569 81,1 17 Oceania
Netherlands 4 17 0,915 42397 81,0 18 Europe
Greece 29 40 0,853 24658 80,8 19 Europe
Germany 6 14 0,911 43049 80,7 20 Europe
Ireland 11 28 0,899 33414 80,7 21 Europe
Austria 22 15 0,881 42930 80,5 22 Europe
United Kingdom 14 27 0,892 35002 80,5 23 Europe
Luxembourg 23 7 0,881 58695 80,5 24 Europe
Finland 24 23 0,879 37366 80,5 25 Europe
Lebanon 65 69 0,765 16263 80,0 26 Africa
Chile 41 54 0,822 20804 80,0 27 America
Portugal 42 43 0,822 24130 79,9 28 Europe
Costa Rica 68 81 0,763 13012 79,9 29 America
Liechtenstein 18 2 0,889 87085 79,9 30 Europe
Cyprus 32 37 0,845 26771 79,8 31 Europe
Malta 39 35 0,829 27022 79,8 32 Europe
Slovenia 25 36 0,874 26809 79,6 33 Europe
Denmark 10 16 0,900 42880 79,4 34 Europe
Bahrain 45 31 0,815 32072 79,3 35 Asia
United States 5 11 0,914 52308 78,9 36 America
Brunei Darussalam 30 5 0,852 70883 78,5 37 Asia
Qatar 31 1 0,851 119029 78,4 38 Asia
Mongolia 103 108 0,698 8466 77,9 39 Asia
Czech Republic 28 42 0,861 24535 77,7 40 Europe
Algeria 94 83 0,717 12555 77,7 41 Africa
Panama 66 68 0,765 16379 77,6 42 America
Mexico 71 70 0,756 15854 77,5 43 America
Albania 95 105 0,716 9225 77,4 44 Europe
Uruguay 50 61 0,790 18108 77,2 45 America
Croatia 47 58 0,812 19025 77,0 46 Europe
United Arab Emirates 40 8 0,827 58068 76,8 47 Asia
Cuba 44 56 0,815 19844 76,6 48 America
Oman 56 18 0,783 42191 76,6 49 Asia
Colombia 99 87 0,711 11527 76,5 50 America
Lithuania 36 44 0,834 23740 76,4 51 Europe
Bosnia and Herzegovina 86 100 0,731 9431 76,4 52 Europe
Argentina 49 63 0,808 17297 76,3 53 America
Antigua and Barbuda 61 59 0,774 18800 76,0 54 America
Guyana 122 121 0,638 6341 75,9 55 America
Tunisia 90 93 0,721 10440 75,9 56 Africa
Saudi Arabia 34 12 0,836 52109 75,5 57 Asia
Andorra 38 21 0,830 40597 75,4 58 Europe
Barbados 59 78 0,776 13604 75,4 59 America
Saint Vincent and the Grenadines 91 95 0,719 10339 75,3 60 America
Libya 55 50 0,784 21666 75,3 61 Africa
Turkey 69 60 0,759 18391 75,3 62 Asia
Montenegro 51 75 0,789 14710 75,2 63 Europe
The former Yugoslav Republic of Macedonia 85 85 0,732 11745 75,2 64 Europe
Cape Verde 123 120 0,636 6365 75,1 65 Africa
Malaysia 62 49 0,773 21824 75,0 66 Asia
Nicaragua 132 137 0,614 4266 74,8 67 America
Peru 82 91 0,737 11280 74,8 68 America
Bahamas 52 52 0,789 21414 74,8 69 America
Saint Lucia 97 102 0,714 9251 74,8 70 America
Venezuela (Bolivarian Republic of) 67 64 0,764 17067 74,6 71 America
Hungary 43 53 0,818 21239 74,6 72 Europe
Armenia 87 111 0,730 7952 74,6 73 Europe
South Africa 119 84 0,658 11788 74,6 74 Africa
Estonia 33 45 0,840 23387 74,4 75 Europe
Thailand 89 80 0,722 13364 74,4 76 Asia
Grenada 80 96 0,744 10339 74,3 77 America
Saint Kitts and Nevis 74 55 0,750 20150 74,3 78 America
Kuwait 46 3 0,814 85820 74,3 79 Asia
Jordan 78 89 0,745 11337 74,1 80 Asia
Iran (Islamic Republic of) 75 79 0,749 13451 74,0 81 Asia
Ecuador 98 98 0,711 9998 74,0 82 America
Georgia 79 116 0,744 6890 73,9 83 Asia
Belize 84 101 0,732 9364 73,9 84 Asia
Serbia 77 90 0,745 11301 73,9 85 Europe
Romania 54 62 0,785 17433 73,8 86 Europe
Honduras 129 138 0,617 4138 73,8 87 America
Mauritius 63 66 0,771 16777 73,6 88 Asia
Sri Lanka 73 103 0,750 9250 73,6 89 Asia
Bulgaria 58 72 0,777 15402 73,5 90 Europe
Jamaica 96 110 0,715 8170 73,5 91 America
Dominican Republic 102 92 0,700 10844 73,4 92 America
Palestine, State of 107 129 0,686 5168 73,2 93 Asia
Seychelles 72 41 0,756 24632 73,2 94 Africa
Samoa 106 134 0,694 4708 73,2 95 Oceania
Brazil 81 76 0,744 14275 72,8 96 America
Suriname 101 73 0,705 15113 72,7 97 America
El Salvador 115 113 0,662 7240 72,6 98 America
China 92 88 0,719 11477 72,5 99 Asia
Palau 60 82 0,775 12823 72,4 100 Oceania
Paraguay 111 112 0,676 7580 72,3 101 America
Latvia 48 47 0,810 22186 72,2 102 Europe
Poland 35 51 0,834 21487 72,1 103 Europe
Kyrgyzstan 125 146 0,628 3021 72,1 104 Asia
Bhutan 137 118 0,584 6775 71,9 105 Asia
Vanuatu 131 153 0,616 2652 71,6 106 Oceania
Egypt 110 94 0,682 10400 71,2 107 Africa
Tonga 100 127 0,705 5316 71,0 108 Oceania
Dominica 93 104 0,717 9235 71,0 109 America
Morocco 130 115 0,617 6905 70,9 110 Africa
Indonesia 108 107 0,684 8970 70,8 111 Asia
Azerbaijan 76 71 0,747 15725 70,8 112 Asia
Bangladesh 142 152 0,558 2713 70,7 113 Asia
Belarus 53 67 0,786 16403 69,9 114 Europe
Trinidad and Tobago 64 39 0,766 25325 69,9 115 America
Fiji 88 114 0,724 7214 69,8 116 Oceania
Iraq 120 77 0,642 14007 69,4 117 Asia
Micronesia (Federated States of) 124 141 0,630 3662 69,0 118 Oceania
Tajikistan 133 157 0,607 2424 68,9 119 Asia
Moldova (Republic of) 114 131 0,663 5041 68,9 120 Europe
Philippines 117 119 0,660 6381 68,7 121 Asia
Ukraine 83 109 0,734 8215 68,5 122 Europe
Nepal 145 158 0,540 2194 68,4 123 Asia
Lao People's Democratic Republic 139 136 0,569 4351 68,3 124 Africa
Cambodia 136 149 0,584 2805 68,3 125 Asia
Uzbekistan 116 128 0,661 5227 68,2 126 Asia
Russian Federation 57 46 0,778 22617 68,0 127 Europe
Papua New Guinea 158 156 0,491 2453 67,7 128 Oceania
Timor-Leste 128 99 0,620 9674 67,5 129 Oceania
Guatemala 126 117 0,628 6866 67,5 130 America
Maldives 104 97 0,698 10074 67,5 131 Asia
Bolivia (Plurinational State of) 113 124 0,667 5552 67,3 132 America
Kiribati 134 154 0,607 2645 67,2 133 Oceania
Pakistan 146 135 0,537 4652 66,6 134 Asia
Kazakhstan 70 57 0,757 19441 66,5 135 Asia
India 135 130 0,586 5150 66,4 136 Asia
Sao Tome and Principe 143 144 0,558 3111 66,3 137 Africa
Viet Nam 121 133 0,638 4892 66,3 138 Asia
Turkmenistan 105 86 0,698 11533 65,5 139 Asia
Myanmar 150 139 0,524 3998 65,2 140 Asia
Madagascar 155 174 0,498 1333 64,7 141 Africa
Namibia 127 106 0,624 9185 64,5 142 Africa
Botswana 109 74 0,683 14792 64,4 143 Africa
Rwanda 151 171 0,506 1403 64,1 144 Africa
Ethiopia 173 176 0,435 1303 63,6 145 Africa
Gabon 112 65 0,674 16977 63,5 146 Africa
Senegal 163 159 0,485 2169 63,5 147 Africa
Yemen 154 140 0,500 3945 63,1 148 Asia
Haiti 168 165 0,471 1636 63,1 149 America
Eritrea 182 177 0,381 1147 62,9 150 Africa
Solomon Islands 157 172 0,491 1385 62,4 151 Oceania
Togo 166 179 0,473 1129 62,1 152 Africa
Djibouti 170 145 0,467 3109 61,8 153 Africa
Kenya 147 160 0,535 2158 61,7 154 Africa
Mauritania 161 147 0,487 2988 61,6 155 Africa
Tanzania (United Republic of) 160 164 0,488 1702 61,5 156 Africa
Ghana 138 142 0,573 3532 61,1 157 Africa
Afghanistan 169 161 0,468 1904 60,9 158 Asia
Comoros 159 169 0,488 1505 60,9 159 Africa
Liberia 175 183 0,412 752 60,6 160 Africa
Zimbabwe 156 175 0,492 1307 59,9 161 Africa
Benin 165 163 0,476 1726 59,3 162 Africa
Uganda 164 173 0,484 1335 59,2 163 Africa
Gambia 172 168 0,441 1557 58,8 164 Africa
Congo 140 132 0,564 4909 58,8 165 Africa
Niger 187 182 0,337 873 58,4 166 Africa
Zambia 141 148 0,561 2898 58,1 167 Africa
Syrian Arab Republic 118 123 0,658 5771 56,9 168 Asia
Sudan 167 143 0,473 3428 56,5 169 Africa
Burkina Faso 181 167 0,388 1602 56,3 170 Africa
Guinea 179 178 0,392 1142 56,1 171 Africa
Malawi 174 185 0,414 715 55,3 172 Africa
Cameroon 152 155 0,504 2557 55,1 173 Africa
Mali 176 170 0,407 1499 55,0 174 Africa
Guinea-Bissau 177 180 0,396 1090 54,3 175 Africa
Burundi 180 184 0,389 749 54,1 176 Africa
Equatorial Guinea 144 48 0,556 21972 53,1 177 Africa
Nigeria 153 126 0,504 5353 52,5 178 Africa
Angola 149 122 0,526 6323 51,9 179 Africa
Chad 184 166 0,372 1622 51,2 180 Africa
Côte d'Ivoire 171 151 0,452 2774 50,7 181 Africa
Mozambique 178 181 0,393 1011 50,3 182 Africa
Central African Republic 185 186 0,341 588 50,2 183 Africa
Congo (Democratic Republic of the) 186 187 0,338 444 50,0 184 Africa
Lesotho 162 150 0,486 2798 49,4 185 Africa
Swaziland 148 125 0,530 5536 49,0 186 Africa
Sierra Leone 183 162 0,374 1815 45,6 187 Africa
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment