├── .gitignore ├── src ├── scripts │ ├── utils │ │ ├── numberWithCommas.js │ │ ├── hexToRgb.js │ │ ├── throttle.js │ │ └── shuffle.js │ ├── flow-map.js │ └── modules │ │ ├── social-media.js │ │ └── flow-map.js └── styles │ ├── utilities │ ├── _functions.scss │ ├── _mixins.scss │ ├── _bem.scss │ └── _reset.scss │ ├── index.scss │ ├── _config.scss │ └── modules │ ├── _flow-map.scss │ ├── _key.scss │ ├── _timeline.scss │ └── _social-media.scss ├── img └── play.svg ├── gulpfile.js ├── tasks │ ├── clean.js │ ├── watch.js │ ├── webserver.js │ ├── styles.js │ ├── scripts.js │ └── data.js ├── utilities │ └── errorHandler.js ├── config.js └── index.js ├── .eslintrc.json ├── package.json ├── index.html ├── README.md ├── dist └── css │ └── index.css └── data └── african-aid.csv /.gitignore: -------------------------------------------------------------------------------- 1 | .sass-cache/ 2 | node_modules/ 3 | *.log 4 | .DS_Store 5 | -------------------------------------------------------------------------------- /src/scripts/utils/numberWithCommas.js: -------------------------------------------------------------------------------- 1 | function numberWithCommas(x) { 2 | var parts = x.toString().split('.') 3 | parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ',') 4 | return parts.join('.') 5 | } 6 | 7 | export default numberWithCommas 8 | -------------------------------------------------------------------------------- /src/scripts/flow-map.js: -------------------------------------------------------------------------------- 1 | import $ from 'jquery' 2 | import FlowMap from './modules/flow-map' 3 | 4 | const $map = $('.flow-map') 5 | $map.each((index, element) => { 6 | const flowMap = new FlowMap(element) 7 | flowMap.init() 8 | }) 9 | -------------------------------------------------------------------------------- /img/play.svg: -------------------------------------------------------------------------------- 1 | Asset 1 -------------------------------------------------------------------------------- /gulpfile.js/tasks/clean.js: -------------------------------------------------------------------------------- 1 | var del = require('del'); 2 | var config = require('../config'); 3 | 4 | module.exports = { 5 | js: function(cb) { 6 | return del([config.scripts.dist], cb); 7 | }, 8 | css: function(cb) { 9 | return del([config.styles.dist], cb); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /gulpfile.js/tasks/watch.js: -------------------------------------------------------------------------------- 1 | var config = require('../config'); 2 | var gulp = require('gulp'); 3 | var path = require('path'); 4 | 5 | module.exports = function() { 6 | gulp.watch(path.join(config.scripts.src, '**', '*.js'), ['scripts:bundle']); 7 | gulp.watch(path.join(config.styles.src, '**', '*.scss'), ['styles']); 8 | }; 9 | -------------------------------------------------------------------------------- /gulpfile.js/tasks/webserver.js: -------------------------------------------------------------------------------- 1 | var gulp = require('gulp'); 2 | var webserver = require('gulp-webserver'); 3 | 4 | module.exports = function() { 5 | gulp.src('./') 6 | .pipe(webserver({ 7 | livereload: true, 8 | directoryListing: true, 9 | open: true, 10 | fallback: 'index.html' 11 | })); 12 | }; 13 | -------------------------------------------------------------------------------- /gulpfile.js/utilities/errorHandler.js: -------------------------------------------------------------------------------- 1 | var config = require('../config') 2 | var gutil = require('gulp-util'); 3 | 4 | module.exports = function(error) { 5 | gutil.log(gutil.colors.red.bold('Error' + (error.plugin ? ': ' + error.plugin : '')), '\n\n' + error.message, (error.codeFrame ? '\n' + error.codeFrame : '')); 6 | 7 | process.exit(1); 8 | 9 | return; 10 | }; 11 | -------------------------------------------------------------------------------- /src/styles/utilities/_functions.scss: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // Functions 3 | // ----------------------------------------------------------------------------- 4 | 5 | 6 | // Calculates REM unit 7 | // ----------------------------------------------------------------------------- 8 | 9 | @function rem($unit) { 10 | @return ($unit / 16) + 0rem; 11 | } 12 | 13 | @function em($unit) { 14 | @return ($unit / 16) + 0em; 15 | } -------------------------------------------------------------------------------- /gulpfile.js/config.js: -------------------------------------------------------------------------------- 1 | var path = require('path'); 2 | 3 | module.exports = { 4 | autoprefixer: { 5 | browsers: [ 6 | 'last 2 versions', 7 | 'Android 4', 8 | 'ie >= 9', 9 | 'iOS >= 6' 10 | ] 11 | }, 12 | sass: { 13 | errLogToConsole: true 14 | }, 15 | scripts: { 16 | dist: path.join('dist', 'javascript'), 17 | src: 'src/scripts' 18 | }, 19 | styles: { 20 | dist: path.join('dist', 'css'), 21 | src: 'src/styles' 22 | }, 23 | production: true 24 | }; 25 | -------------------------------------------------------------------------------- /src/scripts/utils/hexToRgb.js: -------------------------------------------------------------------------------- 1 | function hexToRgb(hex) { 2 | // Expand shorthand form (e.g. "03F") to full form (e.g. "0033FF") 3 | let shorthandRegex = /^#?([a-f\d])([a-f\d])([a-f\d])$/i 4 | hex = hex.replace(shorthandRegex, (m, r, g, b) => { 5 | return r + r + g + g + b + b 6 | }) 7 | 8 | let result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex) 9 | return result ? { 10 | r: parseInt(result[1], 16), 11 | g: parseInt(result[2], 16), 12 | b: parseInt(result[3], 16) 13 | } : null 14 | } 15 | 16 | export default hexToRgb 17 | -------------------------------------------------------------------------------- /src/scripts/utils/throttle.js: -------------------------------------------------------------------------------- 1 | /* 2 | Event throttle using requestAnimationFrame 3 | Author: Mike Simmonds - https://gist.github.com/simmo/34a18a0b98547c16c071 4 | */ 5 | 6 | function throttle(type, name, obj = window) { 7 | let running = false 8 | 9 | let func = () => { 10 | if (running) { 11 | return 12 | } 13 | 14 | running = true 15 | 16 | requestAnimationFrame(() => { 17 | obj.dispatchEvent(new CustomEvent(name)) 18 | running = false 19 | }) 20 | } 21 | 22 | obj.addEventListener(type, func) 23 | } 24 | 25 | export default throttle 26 | -------------------------------------------------------------------------------- /src/scripts/utils/shuffle.js: -------------------------------------------------------------------------------- 1 | function shuffle(array) { 2 | let currentIndex = array.length 3 | let temporaryValue 4 | let randomIndex 5 | 6 | // While there remain elements to shuffle... 7 | while (0 !== currentIndex) { 8 | 9 | // Pick a remaining element... 10 | randomIndex = Math.floor(Math.random() * currentIndex) 11 | currentIndex -= 1 12 | 13 | // And swap it with the current element. 14 | temporaryValue = array[currentIndex] 15 | array[currentIndex] = array[randomIndex] 16 | array[randomIndex] = temporaryValue 17 | } 18 | 19 | return array 20 | } 21 | 22 | export default shuffle 23 | -------------------------------------------------------------------------------- /src/styles/utilities/_mixins.scss: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // Mixins 3 | // ----------------------------------------------------------------------------- 4 | 5 | 6 | // Breakpoints 7 | // ----------------------------------------------------------------------------- 8 | @mixin bp($point) { 9 | @media screen and (max-width: $point) { 10 | @content 11 | } 12 | } 13 | 14 | 15 | // Polyfills 16 | // ----------------------------------------------------------------------------- 17 | 18 | @mixin clearfix() { 19 | *zoom: 1; 20 | 21 | &:before, 22 | &:after { 23 | content: ""; 24 | display: table; 25 | 26 | line-height: 0; 27 | } 28 | 29 | &:after { 30 | clear: both; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/styles/index.scss: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // Visa Olympic Timeline 3 | // ----------------------------------------------------------------------------- 4 | 5 | 6 | // Initialize 7 | // ----------------------------------------------------------------------------- 8 | 9 | @import "utilities/functions"; 10 | @import "config"; 11 | 12 | 13 | // Utilities 14 | // ----------------------------------------------------------------------------- 15 | 16 | @import "utilities/bem"; 17 | @import "utilities/mixins"; 18 | @import "utilities/reset"; 19 | 20 | 21 | 22 | 23 | // Modules 24 | // ----------------------------------------------------------------------------- 25 | 26 | @import "modules/flow-map"; 27 | @import "modules/key"; 28 | @import "modules/social-media"; 29 | @import "modules/timeline"; 30 | -------------------------------------------------------------------------------- /gulpfile.js/index.js: -------------------------------------------------------------------------------- 1 | var config = require('./config'); 2 | var gulp = require('gulp'); 3 | 4 | // Load tasks 5 | var clean = require('./tasks/clean'); 6 | var scripts = require('./tasks/scripts'); 7 | var styles = require('./tasks/styles'); 8 | var watch = require('./tasks/watch'); 9 | var webserver = require('./tasks/webserver'); 10 | var data = require('./tasks/data'); 11 | 12 | // Define tasks and dependencies 13 | gulp.task('clean:css', clean.css); 14 | gulp.task('clean:js', clean.js); 15 | 16 | gulp.task('data', data.sort); 17 | 18 | gulp.task('scripts:lint', scripts.lint); 19 | gulp.task('scripts:bundle', ['scripts:lint'], scripts.bundle); 20 | gulp.task('styles', styles); 21 | 22 | gulp.task('watch', watch); 23 | 24 | // Build 25 | gulp.task('build', ['clean:css', 'clean:js'], function() { 26 | gulp.start(['scripts:bundle', 'styles']); 27 | }); 28 | 29 | gulp.task('webserver', webserver); 30 | 31 | gulp.task('default', ['watch', 'webserver']); 32 | 33 | -------------------------------------------------------------------------------- /src/styles/_config.scss: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // Config 3 | // ----------------------------------------------------------------------------- 4 | 5 | // Breakpoints 6 | // -------------------------------------------------------------------------- 7 | 8 | $tablet: 1024; 9 | $mobile: 750; 10 | $min-width: 320; 11 | 12 | // Colours 13 | // -------------------------------------------------------------------------- 14 | 15 | 16 | 17 | // Fonts 18 | // -------------------------------------------------------------------------- 19 | 20 | $font-stack: "proxima-nova",sans-serif; 21 | $font-size: rem(16); 22 | $line-height: 1.25; 23 | $font-weight: normal; 24 | 25 | 26 | html, body { 27 | min-height: 100%; 28 | } 29 | 30 | body { 31 | height: 100%; 32 | } 33 | -------------------------------------------------------------------------------- /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "ecmaFeatures": { 3 | "modules": true, 4 | "jsx": false 5 | }, 6 | "parserOptions": { 7 | "sourceType": "module" 8 | }, 9 | "env": { 10 | "browser": true, 11 | "node": true, 12 | "es6": true 13 | }, 14 | "globals": { 15 | "__ENV__": true 16 | }, 17 | "rules": { 18 | "complexity": [1, 10], 19 | "no-bitwise": 2, 20 | "camelcase": [2, { "properties": "never" }], 21 | "curly": [2, "all"], 22 | "eqeqeq": 2, 23 | "wrap-iife": 2, 24 | "indent": 2, 25 | "no-use-before-define": 2, 26 | "new-cap": 2, 27 | "no-caller": 2, 28 | "quotes": [2, "single"], 29 | "strict": [2, "global"], 30 | "no-undef": 2, 31 | "no-unused-vars": 2, 32 | "no-empty": 2, 33 | "comma-dangle": [2, "never"], 34 | "max-len": [1, 220], 35 | "comma-style": [2, "last"], 36 | "dot-notation": 2, 37 | "brace-style": [2, "1tbs", { "allowSingleLine": false }], 38 | "one-var": [2, "never"], 39 | "operator-linebreak": [2, "after"], 40 | "space-infix-ops": 2, 41 | "space-before-blocks": [2, "always"], 42 | "semi": [2, "never"], 43 | "eol-last": 2 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "BubbleNetwork", 3 | "title": "Emma Lewis", 4 | "version": "0.1.0", 5 | "description": "Re-usable bubble network diagram", 6 | "contributors": [ 7 | "Emma Lewis" 8 | ], 9 | "company": "Code For Africa", 10 | "devDependencies": { 11 | "babel-core": "^6.9.1", 12 | "babel-eslint": "^6.0.4", 13 | "babel-preset-es2015": "^6.9.0", 14 | "babelify": "^7.3.0", 15 | "browserify": "^13.0.1", 16 | "csv": "^1.1.1", 17 | "del": "^2.2.0", 18 | "fs": "0.0.2", 19 | "gulp": "^3.9.1", 20 | "gulp-autoprefixer": "^3.1.0", 21 | "gulp-compile-handlebars": "^0.6.1", 22 | "gulp-cssnano": "^2.1.2", 23 | "gulp-eslint": "^2.0.0", 24 | "gulp-handlebars": "^4.0.0", 25 | "gulp-pixrem": "^1.0.0", 26 | "gulp-rename": "^1.2.2", 27 | "gulp-sass": "^2.3.1", 28 | "gulp-sourcemaps": "^1.6.0", 29 | "gulp-streamify": "^1.0.2", 30 | "gulp-uglify": "^1.5.3", 31 | "gulp-util": "^3.0.7", 32 | "gulp-webserver": "^0.9.1", 33 | "topojson": "^3.0.2", 34 | "vinyl-source-stream": "^1.1.0" 35 | }, 36 | "dependencies": { 37 | "d3": "^4.2.2", 38 | "jquery": "^3.0.0", 39 | "pubsub-js": "^1.5.7" 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Network diagram 9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /gulpfile.js/tasks/styles.js: -------------------------------------------------------------------------------- 1 | var autoprefixer = require('gulp-autoprefixer'); 2 | var config = require('../config'); 3 | var errorHandler = require('../utilities/errorHandler'); 4 | var gulp = require('gulp'); 5 | var join = require('path').join; 6 | var cssnano = require('gulp-cssnano'); 7 | var sass = require('gulp-sass'); 8 | var sourcemaps = require('gulp-sourcemaps'); 9 | var gutil = require('gulp-util'); 10 | var pixrem = require('gulp-pixrem'); 11 | 12 | module.exports = function() { 13 | 14 | // What mode? 15 | gutil.log('Bundling CSS in', (config.production ? gutil.colors.red.bold('production') : gutil.colors.green.bold('development')), 'mode...'); 16 | 17 | return gulp.src(join(config.styles.src, '*.scss')) 18 | .pipe(config.production ? gutil.noop() : sourcemaps.init()) 19 | .pipe(sass(config.sass)) 20 | .on('error', errorHandler) 21 | .pipe(autoprefixer(config.autoprefixer)) 22 | .on('error', errorHandler) 23 | .pipe(pixrem({ rootValue: '16px' })) 24 | .pipe(config.production ? gutil.noop() : sourcemaps.write()) 25 | .pipe(config.production ? cssnano({ autoprefixer: config.autoprefixer }) : gutil.noop()) 26 | .pipe(gulp.dest(join(config.styles.dist))) 27 | 28 | }; 29 | -------------------------------------------------------------------------------- /src/styles/modules/_flow-map.scss: -------------------------------------------------------------------------------- 1 | .flow-map { 2 | &__header { 3 | background: inherit; 4 | overflow: hidden; 5 | padding: rem(60) rem(20) rem(20); 6 | 7 | @media (min-width: 550px) { 8 | padding: rem(60) rem(55) rem(20); 9 | } 10 | } 11 | 12 | &__heading { 13 | @media (min-width: 550px) { 14 | float: left; 15 | margin-right: rem(80); 16 | } 17 | } 18 | 19 | &__title { 20 | font-size: rem(32); 21 | line-height: rem(40); 22 | } 23 | 24 | &__description { 25 | font-size: rem(14); 26 | font-weight: 200; 27 | line-height: rem(17); 28 | } 29 | 30 | &__svg { 31 | display: block; 32 | height: 100%; 33 | // left: 0; 34 | margin: 0 auto; 35 | // position: absolute; 36 | // right: 0; 37 | width: auto; 38 | } 39 | 40 | &__zoom-wrapper { 41 | bottom: 0; 42 | left: 0; 43 | position: absolute; 44 | right: 0; 45 | top: 0; 46 | } 47 | 48 | &__svg-wrapper { 49 | display: block; 50 | height: 0; 51 | margin-bottom: rem(32); 52 | overflow: hidden; 53 | padding-bottom: 42.7%; 54 | position: relative; 55 | width: 100%; 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /src/styles/modules/_key.scss: -------------------------------------------------------------------------------- 1 | .key { 2 | margin-top: rem(20); 3 | 4 | @media (min-width: 550px) { 5 | float: left; 6 | line-height: rem(48); 7 | margin-right: rem(80); 8 | margin-top: 0; 9 | } 10 | 11 | &__item { 12 | display: inline-block; 13 | font-weight: 200; 14 | vertical-align: middle; 15 | 16 | &:hover { 17 | cursor: pointer; 18 | } 19 | 20 | &.active { 21 | font-weight: 700; 22 | 23 | &:hover { 24 | cursor: default; 25 | } 26 | } 27 | } 28 | 29 | &__lozenge { 30 | background: #3C5468; 31 | border-radius: rem(7); 32 | display: inline-block; 33 | height: rem(14); 34 | margin-left: rem(16); 35 | margin-right: rem(16); 36 | position: relative; 37 | vertical-align: middle; 38 | width: rem(44); 39 | 40 | &:hover { 41 | cursor: pointer; 42 | } 43 | 44 | .key__lozenge-disc { 45 | border-radius: 50%; 46 | display: block; 47 | height: rem(14); 48 | position: absolute; 49 | right: 0; 50 | width: rem(14); 51 | 52 | .key__item--sending.active + & { 53 | left: 0; 54 | right: auto; 55 | } 56 | } 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /gulpfile.js/tasks/scripts.js: -------------------------------------------------------------------------------- 1 | var gulp = require('gulp'); 2 | var fs = require("fs"); 3 | var browserify = require("browserify"); 4 | var babelify = require("babelify"); 5 | var source = require('vinyl-source-stream'); 6 | var config = require('../config'); 7 | var errorHandler = require('../utilities/errorHandler'); 8 | var uglify = require('gulp-uglify'); 9 | var streamify = require('gulp-streamify'); 10 | var gutil = require('gulp-util'); 11 | var join = require('path').join; 12 | var eslint = require('gulp-eslint'); 13 | 14 | 15 | module.exports = { 16 | bundle: function(){ 17 | 18 | var files = [ 19 | 'flow-map.js' 20 | ]; 21 | // map them to our stream function 22 | var tasks = files.map(function(entry) { 23 | return browserify({ debug: true, entries: join(config.scripts.src, entry) }) 24 | .transform(babelify, {presets: ['es2015']}) 25 | .require(join(config.scripts.src, entry), { entry: true }) 26 | .bundle() 27 | .on('error', errorHandler) 28 | .pipe(source(join(config.scripts.dist, 'flow-map.min.js'))) 29 | .pipe(config.production ? streamify(uglify()) : gutil.noop()) 30 | .pipe(gulp.dest('./')); 31 | }) 32 | // create a merged stream 33 | // return es.merge.apply(null, tasks); 34 | }, 35 | lint: function() { 36 | gulp.src([join(config.scripts.src, '*.js'), join(config.scripts.src, '**/*.js')]) 37 | .pipe(eslint()) 38 | .pipe(eslint.format('stylish')); 39 | } 40 | }; 41 | -------------------------------------------------------------------------------- /src/scripts/modules/social-media.js: -------------------------------------------------------------------------------- 1 | import $ from 'jquery' 2 | 3 | export default () => { 4 | let buttons = { 5 | twitter: $('#twitter-button'), 6 | facebook: $('#facebook-button'), 7 | whatsapp: $('#whatsapp-button'), 8 | share: $('#share-button'), 9 | close: $('#share-close-button') 10 | } 11 | 12 | buttons.twitter.on('click', (event) => { 13 | event.preventDefault() 14 | 15 | let url = 'https://twitter.com/intent/tweet?text=...' 16 | let name = 'twitter-share-dialog' 17 | let options = 'menubar=no, toolbar=no, resizable=no, scrollbar=no, height=400, width=500' 18 | 19 | window.open(url, name, options) 20 | }) 21 | 22 | buttons.facebook.on('click', (event) => { 23 | event.preventDefault() 24 | 25 | let url = 'https://facebook.com/sharer.php?u=' + encodeURIComponent('https://codeforafrica.github.io/GenderGapClock/dist/') 26 | let name = 'facebook-share-dialog' 27 | let options = 'menubar=no, toolbar=no, resizable=no, scrollbar=no, height=400, width=500' 28 | 29 | window.open(url, name, options) 30 | }) 31 | 32 | buttons.share.on('click', (event) => { 33 | event.preventDefault() 34 | 35 | if (window.matchMedia('(min-width: 550px)').matches) { 36 | return 37 | } else { 38 | $('.social-media__buttons').addClass('active') 39 | } 40 | }) 41 | 42 | buttons.close.on('click', (event) => { 43 | event.preventDefault() 44 | $('.social-media__buttons').removeClass('active') 45 | }) 46 | } 47 | -------------------------------------------------------------------------------- /src/styles/utilities/_bem.scss: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // BEM 3 | // ----------------------------------------------------------------------------- 4 | 5 | 6 | // Options 7 | // ----------------------------------------------------------------------------- 8 | 9 | $bem-element-separator: '__' !default; 10 | $bem-modifier-separator: '--' !default; 11 | 12 | 13 | // Block (New) 14 | // ----------------------------------------------------------------------------- 15 | 16 | @mixin new($name, $description: '') { 17 | @if $description != '' { 18 | $description: ': ' + $description; 19 | } 20 | 21 | @at-root { 22 | /* #{$name}#{$description} */ 23 | .#{$name} { 24 | @content; 25 | } 26 | } 27 | } 28 | 29 | 30 | // Element (Has) 31 | // ----------------------------------------------------------------------------- 32 | 33 | @mixin has($name) { 34 | $selector: nth(#{&}, 1); 35 | 36 | @if str-index($selector, $bem-element-separator) { 37 | @error '#{$selector} is already an element'; 38 | } 39 | 40 | &#{$bem-element-separator}#{$name} { 41 | @content; 42 | } 43 | } 44 | 45 | 46 | // Modifier (When) 47 | // ----------------------------------------------------------------------------- 48 | 49 | @mixin when($name) { 50 | $selector: nth(#{&}, 1); 51 | 52 | @if str-index(#{&}, $bem-modifier-separator) { 53 | @error '#{$selector} is already modified'; 54 | } 55 | 56 | // Add the modifier and rules 57 | &#{$bem-modifier-separator}#{$name} { 58 | @extend #{$selector}; 59 | @content; 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /gulpfile.js/tasks/data.js: -------------------------------------------------------------------------------- 1 | var fs = require("fs"); 2 | var join = require('path').join; 3 | var config = require('../config'); 4 | var parse = require('csv-parse'); 5 | 6 | module.exports = { 7 | sort: function() { 8 | var betterData = new Array(); 9 | var columns = ['region','region_id','region_to','region_to_id','sending_name','sending_code','receiving_name','receiving_code','value','value2','value3','value4','amount_1990','amount_1995','amount_2000','amount_2005','notes'] 10 | fs.readFile('data/immigration.csv', 'utf8', function(err, data) { 11 | parse(data, {columns: columns, trim: true}, (err, output) => { 12 | console.log(output) 13 | for(var i = 0; i < output.length; i++) { 14 | betterData.push([1990, output[i].sending_name, output[i].receiving_name, output[i].amount_1990]); 15 | betterData.push([1995, output[i].sending_name, output[i].receiving_name, output[i].amount_1995]); 16 | betterData.push([2000, output[i].sending_name, output[i].receiving_name, output[i].amount_2000]); 17 | betterData.push([2005, output[i].sending_name, output[i].receiving_name, output[i].amount_2005]); 18 | } 19 | console.log(betterData) 20 | var csvContent = "data:text/csv;charset=utf-8,"; 21 | var dataString = ''; 22 | betterData.forEach(function(infoArray, index){ 23 | dataString = infoArray.join(","); 24 | csvContent += index < betterData.length ? dataString+ "\n" : dataString; 25 | 26 | }); 27 | 28 | fs.writeFile('data/immigration-fixed.csv', csvContent, function(err) { 29 | console.log(err); 30 | }); 31 | }); 32 | 33 | 34 | }); 35 | } 36 | }; 37 | -------------------------------------------------------------------------------- /src/styles/modules/_timeline.scss: -------------------------------------------------------------------------------- 1 | .timeline { 2 | bottom: 0; 3 | left: 0; 4 | overflow: hidden; 5 | position: fixed; 6 | right: 0; 7 | 8 | &__play { 9 | background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16.67 16.67'%3E%3Ctitle%3Eicon_play%3C/title%3E%3Cpolygon fill='%23000000' points='13.39 8.33 5.28 13.02 5.28 3.65 13.39 8.33'/%3E%3C/svg%3E"); 10 | background-repeat:no-repeat; 11 | background-position: 50% 50%; 12 | background-size: auto 20px; 13 | float: left; 14 | height: rem(32); 15 | width: rem(55); 16 | 17 | &.timeline__pause { 18 | background-image: url("data:image/svg+xml;charset=utf8,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' width='16.667px' height='16.667px' viewBox='0 0 16.667 16.667' enable-background='new 0 0 16.667 16.667' xml:space='preserve'%3E%3Cline fill='none' stroke='%23000000' stroke-width='2' stroke-miterlimit='10' x1='6.333' y1='4.166' x2='6.333' y2='12.5'/%3E%3Cline fill='none' stroke='%23000000' stroke-width='2' stroke-miterlimit='10' x1='10.333' y1='4.166' x2='10.333' y2='12.5'/%3E%3C/svg%3E"); 19 | } 20 | 21 | &.timeline__reset { 22 | background-image: url("data:image/svg+xml;charset=utf8,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' width='16.667px' height='16.667px' viewBox='0 0 16.667 16.667' enable-background='new 0 0 16.667 16.667' xml:space='preserve'%3E%3Cg%3E%3Cg%3E%3Cpath fill='none' stroke='%23000000' stroke-linecap='square' stroke-miterlimit='10' d='M10.456,12.063 c-0.626,0.357-1.351,0.562-2.123,0.562c-2.37,0-4.292-1.921-4.292-4.292s1.921-4.292,4.292-4.292s4.292,1.921,4.292,4.292'/%3E%3Cg%3E%3Cpolygon fill='%23000000' points='15.061,8.007 10.201,8.007 12.631,10.437 '/%3E%3C/g%3E%3C/g%3E%3C/g%3E%3C/svg%3E"); 23 | } 24 | 25 | &:hover { 26 | cursor: pointer; 27 | } 28 | } 29 | 30 | &__years { 31 | float: left; 32 | width: calc(100% - #{rem(55)}); 33 | } 34 | 35 | &__year { 36 | box-sizing: border-box; 37 | color: black; 38 | display: inline-block; 39 | font-size: rem(14); 40 | font-weight: 700; 41 | height: rem(32); 42 | line-height: rem(32); 43 | text-align: center; 44 | 45 | &:hover { 46 | cursor: pointer; 47 | text-decoration: underline; 48 | } 49 | 50 | &--active { 51 | border-bottom: 4px solid black; 52 | 53 | &:hover { 54 | cursor: default; 55 | text-decoration: none; 56 | } 57 | } 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /src/styles/utilities/_reset.scss: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------------------------------- 2 | // Reset 3 | // ----------------------------------------------------------------------------- 4 | // Based on Eric Meyer's reset CSS - http://meyerweb.com/eric/tools/css/reset 5 | // ----------------------------------------------------------------------------- 6 | 7 | 8 | html, 9 | body, 10 | div, 11 | span, 12 | applet, 13 | object, 14 | iframe, 15 | h1, 16 | h2, 17 | h3, 18 | h4, 19 | h5, 20 | h6, 21 | p, 22 | blockquote, 23 | pre, 24 | a, 25 | abbr, 26 | acronym, 27 | address, 28 | big, 29 | cite, 30 | code, 31 | del, 32 | dfn, 33 | em, 34 | img, 35 | ins, 36 | kbd, 37 | q, 38 | s, 39 | samp, 40 | small, 41 | strike, 42 | strong, 43 | sub, 44 | sup, 45 | tt, 46 | var, 47 | b, 48 | u, 49 | i, 50 | center, 51 | dl, 52 | dt, 53 | dd, 54 | ol, 55 | ul, 56 | li, 57 | fieldset, 58 | form, 59 | label, 60 | legend, 61 | table, 62 | caption, 63 | tbody, 64 | tfoot, 65 | thead, 66 | tr, 67 | th, 68 | td, 69 | article, 70 | aside, 71 | canvas, 72 | details, 73 | embed, 74 | figure, 75 | figcaption, 76 | footer, 77 | header, 78 | hgroup, 79 | menu, 80 | nav, 81 | output, 82 | ruby, 83 | section, 84 | summary, 85 | time, 86 | mark, 87 | audio, 88 | video { 89 | padding: 0; 90 | border: 0; 91 | margin: 0; 92 | 93 | font: inherit; 94 | vertical-align: baseline; 95 | } 96 | 97 | article, 98 | aside, 99 | details, 100 | figcaption, 101 | figure, 102 | footer, 103 | header, 104 | hgroup, 105 | main, 106 | menu, 107 | nav, 108 | section { 109 | display: block; 110 | } 111 | 112 | body { 113 | -webkit-tap-highlight-color: transparent; 114 | font-family: $font-stack; 115 | font-size: $font-size; 116 | font-weight: $font-weight; 117 | line-height: $line-height; 118 | min-width: rem($min-width); 119 | } 120 | 121 | ul, ol { 122 | list-style: none; 123 | } 124 | 125 | blockquote, 126 | q { 127 | quotes: none; 128 | 129 | &:before, 130 | &:after { 131 | content: ''; 132 | content: none; 133 | } 134 | } 135 | 136 | table { 137 | border-collapse: collapse; 138 | border-spacing: 0; 139 | } 140 | 141 | h1 { 142 | font-size: rem(24); 143 | line-height: rem(30); 144 | } 145 | 146 | h2 { 147 | font-size: rem(18); 148 | line-height: rem(30); 149 | } 150 | 151 | a, 152 | button, 153 | input { 154 | -webkit-tap-highlight-color: transparent; 155 | text-decoration: none; 156 | } 157 | 158 | .visuallyhidden { 159 | background-color: transparent; 160 | background-repeat: no-repeat; 161 | background-position: 0 0; 162 | border: 0; 163 | color: transparent; 164 | display: block; 165 | font: 0/0 a; 166 | text-shadow: none; 167 | } 168 | -------------------------------------------------------------------------------- /src/styles/modules/_social-media.scss: -------------------------------------------------------------------------------- 1 | $number-of-links: 3; 2 | $number-of-links-mobile: 4; 3 | 4 | .social-media { 5 | background: inherit; 6 | 7 | @media (min-width: 550px) { 8 | float: right; 9 | margin-top: rem(10); 10 | } 11 | } 12 | 13 | .social-media__title { 14 | display: inline-block; 15 | font-size: rem(14); 16 | font-weight: 300; 17 | pointer-events: all; 18 | position: absolute; 19 | right: rem(16); 20 | text-transform: uppercase; 21 | top: rem(30); 22 | vertical-align: middle; 23 | z-index: 1; 24 | 25 | 26 | @media (min-width: 550px) { 27 | font-size: rem(18); 28 | font-weight: 600; 29 | line-height: rem(24); 30 | pointer-events: none; 31 | position: static; 32 | } 33 | } 34 | 35 | .social-media__buttons { 36 | background: inherit; 37 | bottom: 0; 38 | left: 0; 39 | margin-bottom: 0; 40 | margin-top: 0; 41 | padding-left: 0; 42 | padding-top: rem(30); 43 | position: fixed; 44 | top: 0; 45 | transform: translateX(100%); 46 | transition: transform 350ms; 47 | width: 100%; 48 | z-index: 2; 49 | 50 | .section__header { 51 | margin-bottom: 30px; 52 | 53 | @media (min-width: 550px) { 54 | flex: 0 1 auto; 55 | height: 158px; 56 | margin-bottom: 16px; 57 | } 58 | 59 | .logo { 60 | width: 180px; 61 | } 62 | } 63 | 64 | ul { 65 | list-style-type: none; 66 | margin-top: 120px; 67 | } 68 | 69 | &.active { 70 | box-sizing: border-box; 71 | padding: rem(30); 72 | transform: translateX(0); 73 | } 74 | 75 | @media (min-width: 550px) { 76 | background: none; 77 | display: inline-block; 78 | height: rem(24); 79 | padding-top: 0; 80 | position: static; 81 | transform: none; 82 | transition: none; 83 | vertical-align: middle; 84 | width: auto; 85 | 86 | .section__header { 87 | display: none; 88 | } 89 | 90 | ul { 91 | margin-top: 0; 92 | padding-left: 0; 93 | } 94 | } 95 | } 96 | 97 | .social-media__close { 98 | display: block; 99 | height: rem(25); 100 | position: absolute; 101 | right: rem(20); 102 | top: rem(30); 103 | width: rem(25); 104 | 105 | @media (min-width: 550px) { 106 | display: none; 107 | } 108 | } 109 | 110 | .social-media__button { 111 | display: block; 112 | 113 | @media (min-width: 550px) { 114 | display: inline-block; 115 | margin-left: rem(40); 116 | 117 | &:last-child { 118 | display: none 119 | } 120 | } 121 | } 122 | 123 | .social-media__link { 124 | align-items: center; 125 | color: inherit; 126 | display: block; 127 | height: 100%; 128 | margin-bottom: rem(40); 129 | text-decoration: none; 130 | transition: opacity 350ms; 131 | 132 | &:hover { 133 | cursor: pointer; 134 | opacity: 0.6; 135 | } 136 | 137 | @media (min-width: 550px) { 138 | margin-bottom: 0; 139 | } 140 | } 141 | 142 | .social-media__title-text { 143 | display: inline-block; 144 | vertical-align: middle; 145 | } 146 | 147 | .social-media__title-icon { 148 | display: inline-block; 149 | height: rem(16); 150 | margin-left: rem(4); 151 | margin-top: rem(-2); 152 | vertical-align: middle; 153 | width: rem(16); 154 | 155 | @media (min-width: 550px) { 156 | display: none; 157 | } 158 | } 159 | 160 | .social-media__icon { 161 | display: inline-block; 162 | height: rem(20); 163 | margin-right: rem(40); 164 | vertical-align: middle; 165 | width: rem(20); 166 | 167 | @media (min-width: 550px) { 168 | margin-right: 0; 169 | } 170 | } 171 | 172 | .social-media__text { 173 | display: inline-block; 174 | font-size: rem(19); 175 | font-weight: 300; 176 | vertical-align: middle; 177 | 178 | @media (min-width: 550px) { 179 | display: none; 180 | } 181 | } 182 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Flow maps 2 | 3 | Flow maps shows bilateral movement between geographical areas over time. The default map is a world map that can show movement between countries, but this map can be replaced by other maps to produce movements on different scales at any location. 4 | 5 | 6 | ## Usage 7 | 8 | ```html 9 |
10 | 11 | 12 | ``` 13 | 14 | ![flow-maps-screenshot](https://user-images.githubusercontent.com/1282239/32061950-00a8a00c-ba6b-11e7-8a04-f034aab41007.png) 15 | 16 | ## API Reference 17 | 18 | By default a world map will be displayed. To change this, link to an external TopoJSON file or overwrite the file at `/data/topojson.json` (see [data-topojson](#topojson) for more information). To add your dataset link to an external csv file or overwrite the file at `/data/data.csv` (see [data-data](#data) for more information). A second example dataset is saved at `/data/african-aid.csv`. 19 | 20 | Flow maps uses [data attributes](https://developer.mozilla.org/en/docs/Web/Guide/HTML/Using_data_attributes) to personalise the visualisation. 21 | 22 | ### data-start-year [required] 23 | 24 | #### Description 25 | 26 | The first year for which data is present 27 | 28 | ### data-end-year [required] 29 | 30 | #### Description 31 | 32 | The last year for which data is present 33 | 34 | ### data-title [required] 35 | 36 | #### Description 37 | 38 | Title for the map 39 | 40 | ### data-description [required] 41 | 42 | #### Description 43 | 44 | Description for the map 45 | 46 | ### data-year-gap [optional] 47 | 48 | #### Description 49 | 50 | The number of years between each dataset. Default: 1 51 | 52 | ### data-bg-color [optional] 53 | 54 | #### Description 55 | 56 | Background colour for the map. Default: '#192A3A' 57 | 58 | ### data-text-color [optional] 59 | 60 | #### Description 61 | 62 | Text colour for the title, description, switch and social menu. Default: '#EFEFEF' 63 | 64 | ### data-map-color [optional] 65 | 66 | #### Description 67 | 68 | Color for the map. Default: '#EFEFEF' 69 | 70 | ### data-sending-color [optional] 71 | 72 | #### Description 73 | 74 | Sending colour for the map. Default: '#7E4C7F' 75 | 76 | ### data-receiving-color [optional] 77 | 78 | #### Description 79 | 80 | Receiving colour for the map. Default: '#23787A' 81 | 82 | ### data-sending-text [optional] 83 | 84 | #### Description 85 | 86 | Label for "sending" direction switch option. Default: 'Sending' 87 | 88 | ### data-receiving-text [optional] 89 | 90 | #### Description 91 | 92 | Label for "receiving" direction switch option. Default: 'Receiving' 93 | 94 | ### data-show-social [optional] 95 | 96 | #### Description 97 | 98 | Whether or not to show the social menu. If set to true, the icons will populate the share content based on the og/meta tags in your website's `` tag. Default: false 99 | 100 | ### data-overlay-text-pre [optional] 101 | 102 | #### Description 103 | 104 | Text to appear on the overlay before the number, e.g. '£'. Default: '' 105 | 106 | ### data-overlay-text-post [optional] 107 | 108 | #### Description 109 | 110 | Text to appear on the overlay after the number, e.g. ' people'. Default: '' 111 | 112 | ### data-ratio [optional] 113 | 114 | #### Description 115 | 116 | A number to describe the ratio of map width to map height. For a full view of the world map this should always be the default 2.3415. Default: 2.3415 117 | 118 | ### data-zoom [optional] 119 | 120 | #### Description 121 | 122 | Magnification factor to display a zoomed map. Default: 1 123 | 124 | ### data-zoom-x [optional] 125 | 126 | #### Description 127 | 128 | X position of the centre of zoom. Default: '50%' 129 | 130 | ### data-zoom-y [optional] 131 | 132 | #### Description 133 | 134 | Y position of the centre of zoom. Default: '50%' 135 | 136 | ### data-topojson [optional] 137 | 138 | #### Description 139 | 140 | Link to an external TopoJSON file defining the map to be displayed. By default the world map will be displayed. You can also change the TopoJSON file by simply replacing the file in `/data/topojson.json`. The TopoJSON file must be valid TopoJSON and have exactly one geometry object named `subunits` and with type `GeometryCollection`. 141 | 142 | ### data-data [optional] 143 | 144 | #### Description 145 | 146 | Link to an external csv file containing the data to be visualized. By default the data will be pulled from `/data/data.csv`. You can replace this file with your own dataset. The data headings should be as follows: `year,sending_name,receiving_name,amount`. 147 | -------------------------------------------------------------------------------- /dist/css/index.css: -------------------------------------------------------------------------------- 1 | body,html{min-height:100%}body{height:100%}a,abbr,acronym,address,applet,article,aside,audio,b,big,blockquote,body,canvas,caption,center,cite,code,dd,del,details,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,i,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,output,p,pre,q,ruby,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,u,ul,var,video{padding:0;border:0;margin:0;font:inherit;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section{display:block}body{-webkit-tap-highlight-color:transparent;font-family:proxima-nova,sans-serif;font-size:16px;font-size:1rem;font-weight:400;line-height:1.25;min-width:320px;min-width:20rem}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:"";content:none}table{border-collapse:collapse;border-spacing:0}h1{font-size:24px;font-size:1.5rem}h1,h2{line-height:30px;line-height:1.875rem}h2{font-size:18px;font-size:1.125rem}a,button,input{-webkit-tap-highlight-color:transparent;text-decoration:none}.visuallyhidden{background-color:transparent;background-repeat:no-repeat;background-position:0 0;border:0;color:transparent;display:block;font:0/0 a;text-shadow:none}.flow-map__header{background:inherit;overflow:hidden;padding:60px 20px 20px;padding:3.75rem 1.25rem 1.25rem}@media (min-width:550px){.flow-map__header{padding:3.75rem 3.4375rem 1.25rem}}@media (min-width:550px){.flow-map__heading{float:left;margin-right:5rem}}.flow-map__title{font-size:32px;font-size:2rem;line-height:40px;line-height:2.5rem}.flow-map__description{font-size:14px;font-size:.875rem;font-weight:200;line-height:17px;line-height:1.0625rem}.flow-map__svg{display:block;height:100%;margin:0 auto;width:auto}.flow-map__zoom-wrapper{bottom:0;left:0;position:absolute;right:0;top:0}.flow-map__svg-wrapper{display:block;height:0;margin-bottom:32px;margin-bottom:2rem;overflow:hidden;padding-bottom:42.7%;position:relative;width:100%}.key{margin-top:20px;margin-top:1.25rem}@media (min-width:550px){.key{float:left;line-height:3rem;margin-right:5rem;margin-top:0}}.key__item{display:inline-block;font-weight:200;vertical-align:middle}.key__item:hover{cursor:pointer}.key__item.active{font-weight:700}.key__item.active:hover{cursor:default}.key__lozenge{background:#3c5468;border-radius:.4375rem;display:inline-block;height:14px;height:.875rem;margin-left:16px;margin-left:1rem;margin-right:16px;margin-right:1rem;position:relative;vertical-align:middle;width:44px;width:2.75rem}.key__lozenge:hover{cursor:pointer}.key__lozenge .key__lozenge-disc{border-radius:50%;display:block;height:14px;height:.875rem;position:absolute;right:0;width:14px;width:.875rem}.key__item--sending.active+.key__lozenge .key__lozenge-disc{left:0;right:auto}.social-media{background:inherit}@media (min-width:550px){.social-media{float:right;margin-top:.625rem}}.social-media__title{display:inline-block;font-size:14px;font-size:.875rem;font-weight:300;pointer-events:all;position:absolute;right:16px;right:1rem;text-transform:uppercase;top:30px;top:1.875rem;vertical-align:middle;z-index:1}@media (min-width:550px){.social-media__title{font-size:1.125rem;font-weight:600;line-height:1.5rem;pointer-events:none;position:static}}.social-media__buttons{background:inherit;bottom:0;left:0;margin-bottom:0;margin-top:0;padding-left:0;padding-top:30px;padding-top:1.875rem;position:fixed;top:0;-webkit-transform:translateX(100%);-ms-transform:translateX(100%);transform:translateX(100%);-webkit-transition:-webkit-transform .35s;transition:-webkit-transform .35s;transition:transform .35s;transition:transform .35s,-webkit-transform .35s;width:100%;z-index:2}.social-media__buttons .section__header{margin-bottom:30px}@media (min-width:550px){.social-media__buttons .section__header{-webkit-box-flex:0;-webkit-flex:0 1 auto;-ms-flex:0 1 auto;flex:0 1 auto;height:158px;margin-bottom:16px}}.social-media__buttons .section__header .logo{width:180px}.social-media__buttons ul{list-style-type:none;margin-top:120px}.social-media__buttons.active{box-sizing:border-box;padding:30px;padding:1.875rem;-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}@media (min-width:550px){.social-media__buttons{background:none;display:inline-block;height:1.5rem;padding-top:0;position:static;-webkit-transform:none;-ms-transform:none;transform:none;-webkit-transition:none;transition:none;vertical-align:middle;width:auto}.social-media__buttons .section__header{display:none}.social-media__buttons ul{margin-top:0;padding-left:0}}.social-media__close{display:block;height:25px;height:1.5625rem;position:absolute;right:20px;right:1.25rem;top:30px;top:1.875rem;width:25px;width:1.5625rem}@media (min-width:550px){.social-media__close{display:none}}.social-media__button{display:block}@media (min-width:550px){.social-media__button{display:inline-block;margin-left:2.5rem}.social-media__button:last-child{display:none}}.social-media__link{-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;color:inherit;display:block;height:100%;margin-bottom:40px;margin-bottom:2.5rem;text-decoration:none;-webkit-transition:opacity .35s;transition:opacity .35s}.social-media__link:hover{cursor:pointer;opacity:.6}@media (min-width:550px){.social-media__link{margin-bottom:0}}.social-media__title-icon,.social-media__title-text{display:inline-block;vertical-align:middle}.social-media__title-icon{height:16px;height:1rem;margin-left:4px;margin-left:.25rem;margin-top:-2px;margin-top:-.125rem;width:16px;width:1rem}@media (min-width:550px){.social-media__title-icon{display:none}}.social-media__icon{display:inline-block;height:20px;height:1.25rem;margin-right:40px;margin-right:2.5rem;vertical-align:middle;width:20px;width:1.25rem}@media (min-width:550px){.social-media__icon{margin-right:0}}.social-media__text{display:inline-block;font-size:19px;font-size:1.1875rem;font-weight:300;vertical-align:middle}@media (min-width:550px){.social-media__text{display:none}}.timeline{bottom:0;left:0;overflow:hidden;position:fixed;right:0}.timeline__play{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16.67 16.67'%3E%3Ctitle%3Eicon_play%3C/title%3E%3Cpolygon fill='%23000000' points='13.39 8.33 5.28 13.02 5.28 3.65 13.39 8.33'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:50% 50%;background-size:auto 20px;float:left;height:32px;height:2rem;width:55px;width:3.4375rem}.timeline__play.timeline__pause{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' width='16.667px' height='16.667px' viewBox='0 0 16.667 16.667' enable-background='new 0 0 16.667 16.667' xml:space='preserve'%3E%3Cline fill='none' stroke='%23000000' stroke-width='2' stroke-miterlimit='10' x1='6.333' y1='4.166' x2='6.333' y2='12.5'/%3E%3Cline fill='none' stroke='%23000000' stroke-width='2' stroke-miterlimit='10' x1='10.333' y1='4.166' x2='10.333' y2='12.5'/%3E%3C/svg%3E")}.timeline__play.timeline__reset{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' width='16.667px' height='16.667px' viewBox='0 0 16.667 16.667' enable-background='new 0 0 16.667 16.667' xml:space='preserve'%3E%3Cg%3E%3Cg%3E%3Cpath fill='none' stroke='%23000000' stroke-linecap='square' stroke-miterlimit='10' d='M10.456,12.063 c-0.626,0.357-1.351,0.562-2.123,0.562c-2.37,0-4.292-1.921-4.292-4.292s1.921-4.292,4.292-4.292s4.292,1.921,4.292,4.292'/%3E%3Cg%3E%3Cpolygon fill='%23000000' points='15.061,8.007 10.201,8.007 12.631,10.437 '/%3E%3C/g%3E%3C/g%3E%3C/g%3E%3C/svg%3E")}.timeline__play:hover{cursor:pointer}.timeline__years{float:left;width:-webkit-calc(100% - 3.4375rem);width:calc(100% - 3.4375rem)}.timeline__year{box-sizing:border-box;color:#000;display:inline-block;font-size:14px;font-size:.875rem;font-weight:700;height:32px;height:2rem;line-height:32px;line-height:2rem;text-align:center}.timeline__year:hover{cursor:pointer;text-decoration:underline}.timeline__year--active{border-bottom:4px solid #000}.timeline__year--active:hover{cursor:default;text-decoration:none} -------------------------------------------------------------------------------- /src/scripts/modules/flow-map.js: -------------------------------------------------------------------------------- 1 | import $ from 'jquery' 2 | import * as d3 from 'd3' 3 | import * as topojson from 'topojson' 4 | import shuffle from '../utils/shuffle' 5 | import throttle from '../utils/throttle' 6 | import hexToRgb from '../utils/hexToRgb' 7 | import socialMedia from './social-media' 8 | import numberWithCommas from '../utils/numberWithCommas' 9 | 10 | // const WIDTH = 960 11 | const HEIGHT = 410 12 | const COLOR_TEXT = '#192A3A' 13 | 14 | class FlowMap { 15 | constructor(map) { 16 | this.map = map 17 | this.$map = $(map) 18 | this.mode = 'receiving' 19 | this.yearInterval = null 20 | this.startYear = this.$map.data('startYear') 21 | this.endYear = this.$map.data('endYear') 22 | this.yearGap = this.$map.data('yearGap') || 1 23 | this.year = this.startYear 24 | this.colorBG = this.$map.data('bgColor') || '#192A3A' 25 | this.colorText = this.$map.data('textColor') || '#EFEFEF' 26 | this.colorMap = this.$map.data('mapColor') || '#EFEFEF' 27 | this.colorSending = this.$map.data('sendingColor') || '#7E4C7F' 28 | this.colorReceiving = this.$map.data('receivingColor') || '#23787A' 29 | this.receivingText = this.$map.data('receivingText') || 'Receiving' 30 | this.sendingText = this.$map.data('sendingText') || 'Sending' 31 | this.showSocial = this.$map.data('showSocial') || false 32 | this.overlayTextPre = this.$map.data('overlayTextPre') || '' 33 | this.overlayTextPost = this.$map.data('overlayTextPost') || '' 34 | this.zoom = this.$map.data('zoom') || 1 35 | this.zoomX = this.$map.data('zoomX') || '50%' 36 | this.zoomY = this.$map.data('zoomY') || '50%' 37 | this.width = 410 * this.$map.data('ratio') || 960 38 | this.dataArray = [] 39 | this.radiusScale = d3.scaleLinear() 40 | this.$window = $(window) 41 | this.multipleTimelineLines = false 42 | } 43 | 44 | init() { 45 | $('html, body').css('background', this.colorBG) 46 | this.addMarkup() 47 | this.setupGradient() 48 | this.svg.append('rect').attr('width', this.width).attr('height', HEIGHT).attr('fill', this.colorBG) 49 | if (this.zoom !== 1) { 50 | $('.flow-map__zoom-wrapper').css({ 51 | 'transform': `scale(${this.zoom})`, 52 | 'transform-origin': `${this.zoomX} ${this.zoomY}` 53 | }) 54 | } 55 | this.drawMap() 56 | this.checkHeight() 57 | 58 | this.$start.on('click', this.timeline.bind(this)) 59 | this.$map.on('click', '.key__item', this.clickKeyItem.bind(this)) 60 | this.$map.on('click', '.key__lozenge', this.clickKeyLozenge.bind(this)) 61 | 62 | this.$timelineYears.on('click', (e) => { 63 | const $target = $(e.currentTarget) 64 | if ($target.hasClass('timeline__year--active')) { 65 | return false 66 | } else { 67 | $target.addClass('timeline__year--active').siblings().removeClass('timeline__year--active') 68 | this.moveToYear($target.data('year')) 69 | } 70 | }) 71 | 72 | throttle('resize', 'resize.map') 73 | this.$window.on('resize.map', () => { 74 | this.checkHeight() 75 | this.checkWidth() 76 | }) 77 | 78 | socialMedia() 79 | } 80 | 81 | setupGradient() { 82 | const svgDefs = this.svg.append('defs') 83 | 84 | const sendingGradient = svgDefs.append('linearGradient') 85 | .attr('id', 'flow-gradient-sending') 86 | const receivingGradient = svgDefs.append('linearGradient') 87 | .attr('id', 'flow-gradient-receiving') 88 | 89 | // Create the stops of the main gradient. Each stop will be assigned 90 | // a class to style the stop using CSS. 91 | sendingGradient.append('stop') 92 | .attr('stop-color', this.colorReceiving) 93 | .attr('offset', '0%') 94 | 95 | sendingGradient.append('stop') 96 | .attr('stop-color', this.colorSending) 97 | .attr('offset', '100%') 98 | 99 | receivingGradient.append('stop') 100 | .attr('stop-color', this.colorSending) 101 | .attr('offset', '0%') 102 | 103 | receivingGradient.append('stop') 104 | .attr('stop-color', this.colorReceiving) 105 | .attr('offset', '100%') 106 | } 107 | 108 | addMarkup() { 109 | this.$map.css('background', this.colorBG) 110 | this.$map.css('color', this.colorText) 111 | this.$map.css('fill', this.colorText) 112 | this.$map.css('stroke', this.colorText) 113 | const modeColor = this.mode === 'receiving' ? this.colorReceiving : this.colorSending 114 | let header = '
' 115 | if (this.showSocial) { 116 | header += `` 173 | } 174 | header += `

${this.$map.data('title')}

${this.$map.data('description')}

` 175 | header += 176 | `
177 | ${this.sendingText} 178 | 179 | ${this.receivingText} 180 |
` 181 | header += '
' 182 | this.$map.append(header) 183 | this.$map.append($('
')) 184 | 185 | this.svg = d3.select('.flow-map__zoom-wrapper').append('svg').attr('viewBox', `0 0 ${this.width} ${HEIGHT}`).attr('class', 'flow-map__svg').attr('stroke', 'none') 186 | this.numberOfYears = (this.endYear - this.startYear) / this.yearGap + 1 187 | this.$header = $('.flow-map__header') 188 | this.$visualisation = $('.flow-map__visualisation') 189 | 190 | if (this.numberOfYears > 1) { 191 | let timeline = `
` 192 | this.yearFraction = 1 / this.numberOfYears 193 | if (this.yearFraction * (this.$window.outerWidth() - 55) < 50) { 194 | let maxPerRow = Math.floor(this.$window.outerWidth() - 55) / 50 195 | let rows = Math.ceil(this.numberOfYears / maxPerRow) 196 | this.multipleTimelineLines = true 197 | this.yearFraction = 1 / Math.floor(this.numberOfYears / rows) 198 | } 199 | this.opacities = shuffle(Array.from(new Array((this.endYear - this.startYear) / this.yearGap + 1), (val,index) => (index + 1) * this.yearFraction)) 200 | const hex = hexToRgb(modeColor) 201 | for (let i = this.startYear; i < this.endYear + 1; i += this.yearGap) { 202 | const className = i === this.startYear ? 'timeline__year timeline__year--active' : 'timeline__year' 203 | timeline += `${i}` 204 | } 205 | timeline += '
' 206 | this.$visualisation.append($(timeline)) 207 | } 208 | 209 | this.$svgWrapper = $('.flow-map__svg-wrapper') 210 | this.$svg = $('.flow-map__svg') 211 | this.$timeline = $('.timeline') 212 | this.$timelineYears = this.$timeline.find('.timeline__year') 213 | this.$start = $('.timeline__play') 214 | } 215 | 216 | checkHeight() { 217 | const WINDOW_HEIGHT = this.$window.outerHeight() 218 | const CONTENT_HEIGHT = this.$svgWrapper.outerHeight() + this.$timeline.outerHeight() + this.$header.outerHeight() 219 | if (CONTENT_HEIGHT < WINDOW_HEIGHT) { 220 | this.$svgWrapper.css('margin-top', `${(WINDOW_HEIGHT - CONTENT_HEIGHT) / 2}px`) 221 | } 222 | } 223 | 224 | checkWidth() { 225 | if (this.yearFraction * (this.$window.outerWidth() - 55) < 50) { 226 | let maxPerRow = Math.floor(this.$window.outerWidth() - 55) / 50 227 | let rows = Math.ceil(this.numberOfYears / maxPerRow) 228 | this.yearFraction = 1 / Math.floor(this.numberOfYears / rows) 229 | this.multipleTimelineLines = true 230 | this.$timelineYears.css('width', `${100 * this.yearFraction}%`) 231 | } else if (this.multipleTimelineLines && this.yearFraction * (this.$window.outerWidth() - 55) >= 50) { 232 | let maxPerRow = Math.floor(this.$window.outerWidth() - 55) / 50 233 | let rows = Math.ceil(this.numberOfYears / maxPerRow) 234 | if (rows === 1) { 235 | this.multipleTimelineLines = false 236 | } 237 | this.yearFraction = 1 / Math.floor(this.numberOfYears / rows) 238 | this.$timelineYears.css('width', `${100 * this.yearFraction}%`) 239 | } 240 | } 241 | 242 | clickKeyItem(e) { 243 | const $TARGET = $(e.currentTarget) 244 | if ($TARGET.hasClass('active')) { 245 | return 246 | } 247 | 248 | $TARGET.addClass('active').siblings('.key__item').removeClass('active') 249 | this.switchMode() 250 | } 251 | 252 | clickKeyLozenge(e) { 253 | const $TARGET = $(e.currentTarget) 254 | $TARGET.siblings('.key__item').toggleClass('active') 255 | this.switchMode() 256 | } 257 | 258 | switchMode() { 259 | this.mode = this.mode === 'receiving' ? 'sending' : 'receiving' 260 | const color = this.mode === 'receiving' ? this.colorReceiving : this.colorSending 261 | $('.key__lozenge-disc').css('background', color) 262 | 263 | this.circles 264 | .transition() 265 | .duration(300) 266 | .attr('r', (d) => { 267 | if (d[this.year] !== undefined) { 268 | if (this.mode === 'receiving') { 269 | return d[this.year].receiving_total > 0 ? this.radiusScale(parseFloat(d[this.year].receiving_total)) : 0 270 | } else { 271 | return d[this.year].sending_total > 0 ? this.radiusScale(parseFloat(d[this.year].sending_total)) : 0 272 | } 273 | } else { 274 | return 0 275 | } 276 | }) 277 | .attr('fill', color) 278 | 279 | const hex = hexToRgb(color) 280 | 281 | this.$timelineYears.each((index, element) => { 282 | $(element).css('background', `rgba(${hex.r}, ${hex.g}, ${hex.b}, ${this.opacities[index]})`) 283 | }) 284 | } 285 | 286 | drawMap() { 287 | const projection = d3.geoEquirectangular() 288 | 289 | const PATH = d3.geoPath() 290 | .projection(projection) 291 | 292 | const BASE_URL = window.location.href.split('/').slice(0, -1).join('/') 293 | let mapUrl = this.$map.data('topojson') ? this.$map.data('topojson') : BASE_URL + '/data/topojson.json' 294 | let dataUrl = this.$map.data('data') ? this.$map.data('data') : BASE_URL + '/data/data.csv' 295 | d3.json(mapUrl, (error, map) => { 296 | const COUNTRIES = topojson.feature(map, map.objects.subunits).features 297 | 298 | const COUNTRY_PATHS = this.svg.selectAll('.flow-map__country') 299 | .data(COUNTRIES) 300 | .enter().append('path') 301 | .attr('class', 'map__country') 302 | .attr('d', PATH) 303 | .attr('stroke', this.colorBG) 304 | .attr('stroke-width', 0.5) 305 | .attr('fill', this.colorMap) 306 | .attr('data-name', (d) => d.name) 307 | .on('mouseover', this.activateCountry.bind(this)) 308 | .on('mouseout', this.deactivateCountry.bind(this)) 309 | 310 | d3.csv(dataUrl, (error, data) => { 311 | let maxAmount = 0 312 | let minAmount = 0 313 | let sendingCountryEntry 314 | let receivingCountryEntry 315 | for (let i = 0; i < data.length; i++) { 316 | sendingCountryEntry = this.dataArray.find(o => o.name === data[i].sending_name) 317 | receivingCountryEntry = this.dataArray.find(o => o.name === data[i].receiving_name) 318 | minAmount += parseFloat(data[i].amount) 319 | 320 | if (sendingCountryEntry !== undefined) { 321 | if (sendingCountryEntry[data[i].year] !== undefined) { 322 | sendingCountryEntry[data[i].year].sending_total += parseFloat(data[i].amount) 323 | sendingCountryEntry[data[i].year].receiving_countries.push(data[i].receiving_name) 324 | sendingCountryEntry[data[i].year].amounts_sent.push(parseFloat(data[i].amount)) 325 | } else { 326 | sendingCountryEntry[data[i].year] = { 327 | 'sending_total': parseFloat(data[i].amount), 328 | 'receiving_countries': [data[i].receiving_name], 329 | 'amounts_sent': [parseFloat(data[i].amount)], 330 | 'receiving_total': 0, 331 | 'sending_countries': [], 332 | 'amounts_received': [] 333 | } 334 | } 335 | } else { 336 | const COUNTRY_PATH = COUNTRY_PATHS.filter((x) => { 337 | return x.properties.name === data[i].sending_name 338 | }) 339 | 340 | const object = { 341 | 'name': data[i].sending_name, 342 | 'id': `${i}-s`, 343 | 'center': PATH.centroid(COUNTRY_PATH.data()[0]) 344 | } 345 | object[data[i].year] = { 346 | 'sending_total': parseFloat(data[i].amount), 347 | 'receiving_countries': [data[i].receiving_name], 348 | 'amounts_sent': [parseFloat(data[i].amount)], 349 | 'receiving_total': 0, 350 | 'sending_countries': [], 351 | 'amounts_received': [] 352 | } 353 | this.dataArray.push(object) 354 | } 355 | 356 | if (receivingCountryEntry !== undefined) { 357 | if (receivingCountryEntry[data[i].year] !== undefined) { 358 | receivingCountryEntry[data[i].year].receiving_total += parseFloat(data[i].amount) 359 | receivingCountryEntry[data[i].year].sending_countries.push(data[i].sending_name) 360 | receivingCountryEntry[data[i].year].amounts_received.push(parseFloat(data[i].amount)) 361 | } else { 362 | receivingCountryEntry[data[i].year] = { 363 | 'receiving_total': parseFloat(data[i].amount), 364 | 'sending_countries': [data[i].sending_name], 365 | 'amounts_received': [parseFloat(data[i].amount)], 366 | 'sending_total': 0, 367 | 'receiving_countries': [], 368 | 'amounts_sent': [] 369 | } 370 | } 371 | } else { 372 | const COUNTRY_PATH = COUNTRY_PATHS.filter((x) => { 373 | return x.properties.name === data[i].receiving_name 374 | }) 375 | 376 | const object = { 377 | 'name': data[i].receiving_name, 378 | 'id': `${i}-r`, 379 | 'center': PATH.centroid(COUNTRY_PATH.data()[0]) 380 | } 381 | object[data[i].year] = { 382 | 'receiving_total': parseFloat(data[i].amount), 383 | 'sending_countries': [data[i].sending_name], 384 | 'amounts_received': [parseFloat(data[i].amount)], 385 | 'sending_total': 0, 386 | 'receiving_countries': [], 387 | 'amounts_sent': [] 388 | } 389 | this.dataArray.push(object) 390 | } 391 | } 392 | 393 | for (let j = 0; j < this.dataArray.length; j++) { 394 | for (let key in this.dataArray[j]) { 395 | if (key !== 'name') { 396 | if(this.dataArray[j][key].sending_total > maxAmount) { 397 | maxAmount = this.dataArray[j][key].sending_total 398 | } 399 | 400 | if (this.dataArray[j][key].sending_total < minAmount && this.dataArray[j][key].sending_total !== 0) { 401 | minAmount = this.dataArray[j][key].sending_total 402 | } 403 | 404 | if(this.dataArray[j][key].receiving_total > maxAmount) { 405 | maxAmount = this.dataArray[j][key].receiving_total 406 | } 407 | 408 | if (this.dataArray[j][key].receiving_total < minAmount && this.dataArray[j][key].receiving_total !== 0) { 409 | minAmount = this.dataArray[j][key].receiving_total 410 | } 411 | } 412 | } 413 | } 414 | 415 | this.radiusScale.domain([minAmount, maxAmount]).range([2, 25]) 416 | this.circleGroups = this.svg.selectAll('.flow-map__group') 417 | .data(this.dataArray) 418 | .enter().append('g') 419 | .attr('transform', (d) => `translate(${d.center})`) 420 | .attr('data-x', (d) => d.center[0]) 421 | .attr('data-y', (d) => d.center[1]) 422 | .attr('class', 'flow-map__group') 423 | .attr('id', (d) => `group-${d.id}`) 424 | .attr('data-sending', (d) => d[this.year] !== undefined && d[this.year].sending_total > 0) 425 | .attr('data-receiving', (d) => d[this.year] !== undefined && d[this.year].receiving_total > 0) 426 | .on('mouseover', this.activateGroup.bind(this)) 427 | .on('mouseout', this.deactivateGroup.bind(this)) 428 | 429 | 430 | this.circles = this.circleGroups.append('circle') 431 | .attr('r', (d) => { 432 | if (d[this.year] !== undefined) { 433 | if (this.mode === 'receiving') { 434 | return d[this.year].receiving_total > 0 ? this.radiusScale(parseFloat(d[this.year].receiving_total)) : 0 435 | } else { 436 | return d[this.year].sending_total > 0 ? this.radiusScale(parseFloat(d[this.year].sending_total)) : 0 437 | } 438 | } else { 439 | return 0 440 | } 441 | }) 442 | .attr('opacity', 0.82) 443 | .attr('fill', () => { 444 | if (this.mode === 'receiving') { 445 | return this.colorReceiving 446 | } else { 447 | return this.colorSending 448 | } 449 | }) 450 | .attr('class', 'flow-map__sending-circle') 451 | .attr('id', (d) => `circle-${d.id}`) 452 | }) 453 | }) 454 | } 455 | 456 | activateCountry(d) { 457 | let name = d.properties.name 458 | let data = this.dataArray.find((element) => element.name === name) 459 | if (data !== undefined) { 460 | let group = $(`#group-${data.id}`) 461 | if (group.length > 0 && group.data(this.mode) === true) { 462 | this.activateGroup(data) 463 | } 464 | } 465 | } 466 | 467 | deactivateCountry(d) { 468 | let name = d.properties.name 469 | let data = this.dataArray.find((element) => element.name === name) 470 | if (data !== undefined) { 471 | this.deactivateGroup(data) 472 | } 473 | } 474 | 475 | activateGroup(d) { 476 | let group = $(`#group-${d.id}`) 477 | this.circles.filter((data) => data.id !== d.id) 478 | .transition() 479 | .duration(300) 480 | .attr('r', (data) => { 481 | if (this.mode === 'receiving' && d[this.year].sending_countries.indexOf(data.name) >= 0) { 482 | const index = data[this.year].receiving_countries.indexOf(d.name) 483 | return data[this.year].amounts_sent[index] > 0 ? this.radiusScale(parseFloat(data[this.year].amounts_sent[index])) : 0 484 | } else if (this.mode === 'sending' && d[this.year].receiving_countries.indexOf(data.name) >= 0) { 485 | const index = data[this.year].sending_countries.indexOf(d.name) 486 | return data[this.year].amounts_received[index] > 0 ? this.radiusScale(parseFloat(data[this.year].amounts_received[index])) : 0 487 | } else { 488 | return 0 489 | } 490 | }) 491 | .attr('fill', this.mode === 'receiving' ? this.colorSending : this.colorReceiving) 492 | .attr('opacity', 1) 493 | 494 | d3.select(`#group-${d.id}`).raise().select('circle') 495 | .transition() 496 | .duration(300) 497 | .attr('r', () => { 498 | if (this.mode === 'receiving') { 499 | return d[this.year].receiving_total > 0 ? this.radiusScale(parseFloat(d[this.year].receiving_total)) : 0 500 | } else { 501 | return d[this.year].sending_total > 0 ? this.radiusScale(parseFloat(d[this.year].sending_total)) : 0 502 | } 503 | }) 504 | .attr('fill', this.mode === 'receiving' ? this.colorReceiving : this.colorSending) 505 | .attr('opacity', 1) 506 | 507 | this.circleGroups.filter((data) => { 508 | if ((this.mode === 'receiving' && d[this.year].sending_countries.indexOf(data.name) >= 0) || (this.mode === 'sending' && d[this.year].receiving_countries.indexOf(data.name) >= 0)) { 509 | return true 510 | } else { 511 | return false 512 | } 513 | }).insert('line', ':first-child') 514 | .attr('x1', 0) 515 | .attr('y1', 0) 516 | .attr('x2', (data) => { 517 | const length = Math.sqrt((parseInt(group.data('x')) - parseInt(data.center[0])) * (parseInt(group.data('x')) - parseInt(data.center[0])) + (parseInt(group.data('y')) - parseInt(data.center[1])) * (parseInt(group.data('y')) - parseInt(data.center[1]))) 518 | return length 519 | }) 520 | .attr('y2', 0.1) 521 | .attr('stroke-width', 2) 522 | .attr('stroke', this.mode === 'receiving' ? 'url(#flow-gradient-receiving)' : 'url(#flow-gradient-sending)') 523 | .attr('transform', (data) => { 524 | let angle = Math.atan((group.data('y') - data.center[1]) / (group.data('x') - data.center[0])) 525 | if (group.data('x') < data.center[0]) { 526 | angle += Math.PI 527 | } 528 | return `rotate(${angle * 180 / Math.PI}, 0, 0)` 529 | }) 530 | .attr('class', 'flow-map__line') 531 | .attr('stroke-dasharray', (data) => { 532 | const length = Math.sqrt((parseInt(group.data('x')) - parseInt(data.center[0])) * (parseInt(group.data('x')) - parseInt(data.center[0])) + (parseInt(group.data('y')) - parseInt(data.center[1])) * (parseInt(group.data('y')) - parseInt(data.center[1]))) 533 | return `${length}, ${length}` 534 | }) 535 | .attr('stroke-dashoffset', (data) => { 536 | const length = Math.sqrt((parseInt(group.data('x')) - parseInt(data.center[0])) * (parseInt(group.data('x')) - parseInt(data.center[0])) + (parseInt(group.data('y')) - parseInt(data.center[1])) * (parseInt(group.data('y')) - parseInt(data.center[1]))) 537 | return this.mode === 'receiving' ? length : -length 538 | }) 539 | .transition() 540 | .delay(300) 541 | .duration(500) 542 | .attr('stroke-dashoffset', 0) 543 | 544 | this.showOverlay(d, group) 545 | } 546 | 547 | deactivateGroup(d) { 548 | this.hideOverlay(d) 549 | d3.selectAll('.flow-map__line').remove() 550 | 551 | this.circles.transition() 552 | .duration(300) 553 | .attr('r', (data) => { 554 | if (data[this.year] !== undefined) { 555 | if (this.mode === 'receiving') { 556 | return data[this.year].receiving_total > 0 ? this.radiusScale(parseFloat(data[this.year].receiving_total)) : 0 557 | } else { 558 | return data[this.year].sending_total > 0 ? this.radiusScale(parseFloat(data[this.year].sending_total)) : 0 559 | } 560 | } else { 561 | return 0 562 | } 563 | }) 564 | .attr('fill', this.mode === 'receiving' ? this.colorReceiving : this.colorSending) 565 | .attr('opacity', 0.82) 566 | } 567 | 568 | hideOverlay(d) { 569 | d3.select(`#overlay-${d.id}`).remove() 570 | } 571 | 572 | showOverlay(d, group) { 573 | if (window.matchMedia('(max-width: 640px)').matches) { 574 | return 575 | } 576 | let X = parseInt(group.data('x')) 577 | const Y = parseInt(group.data('y')) 578 | let offLeft = false 579 | let offRight = false 580 | 581 | if (X < 80) { 582 | X = X + 80 583 | offLeft = true 584 | } else if (X > this.width - 80) { 585 | X = X - 80 586 | offRight = true 587 | } 588 | 589 | this.addOverlayGroup(X, Y, d) 590 | this.addOverlayBox() 591 | this.addOverlayNubbin(offLeft, offRight) 592 | this.addOverlayCountryText(d) 593 | this.addOverlayCountryType(d) 594 | } 595 | 596 | addOverlayGroup(X, Y, d) { 597 | let radius = 0 598 | if (this.mode === 'receiving') { 599 | radius = this.radiusScale(parseFloat(d[this.year].receiving_total)) 600 | } else { 601 | radius = this.radiusScale(parseFloat(d[this.year].sending_total)) 602 | } 603 | this.overlay = this.svg.append('g') 604 | .attr('id', `overlay-${d.id}`) 605 | .attr('transform', `translate(${X - 80}, ${Y - 48 - radius})`) 606 | } 607 | 608 | addOverlayBox() { 609 | this.overlay.append('rect') 610 | .attr('width', 160) 611 | .attr('height', 40) 612 | .attr('x', 0) 613 | .attr('y', 0) 614 | .attr('rx', 5) 615 | .attr('ry', 5) 616 | .attr('fill', '#FFFFFF') 617 | } 618 | 619 | addOverlayNubbin(offLeft, offRight) { 620 | if (offLeft) { 621 | this.overlay.append('polyline') 622 | .attr('fill', '#FFFFFF') 623 | .attr('points', '0 30 10 39 0 45') 624 | } else if (offRight) { 625 | this.overlay.append('polyline') 626 | .attr('fill', '#FFFFFF') 627 | .attr('points', '150 39 160 30 160 45') 628 | } else { 629 | this.overlay.append('polyline') 630 | .attr('fill', '#FFFFFF') 631 | .attr('points', '75 39 85 39 80 45') 632 | } 633 | } 634 | 635 | addOverlayCountryText(d) { 636 | this.overlay.append('text') 637 | .text(d.name.toUpperCase()) 638 | .attr('font-size', d.name.length > 22 ? '7' : '11') 639 | .attr('font-family', 'proxima-nova') 640 | .attr('font-weight', 'light') 641 | .attr('x', 80) 642 | .attr('y', 18) 643 | .attr('fill', COLOR_TEXT) 644 | .attr('text-anchor', 'middle') 645 | } 646 | 647 | addOverlayCountryType(d) { 648 | let amount = this.mode === 'receiving' ? d[this.year].receiving_total : d[this.year].sending_total 649 | if (Math.round(amount) >= 10) { 650 | amount = numberWithCommas(Math.round(amount)) 651 | } else { 652 | amount = Math.round(amount * 10) / 10 653 | } 654 | 655 | amount = this.overlayTextPre + amount + this.overlayTextPost 656 | this.overlay.append('text') 657 | .text(amount) 658 | .attr('font-family', 'proxima-nova') 659 | .attr('font-size', '9') 660 | .attr('font-weight', 'bold') 661 | .attr('x', 80) 662 | .attr('y', 30) 663 | .attr('fill', COLOR_TEXT) 664 | .attr('text-anchor', 'middle') 665 | } 666 | 667 | timeline(e) { 668 | const $TARGET = $(e.currentTarget) 669 | 670 | if ($TARGET.hasClass('timeline__pause')) { 671 | $TARGET.removeClass('timeline__pause') 672 | clearInterval(this.yearInterval) 673 | if (this.year === this.endYear) { 674 | $TARGET.addClass('timeline__reset') 675 | } else { 676 | $TARGET.removeClass('timeline__reset') 677 | } 678 | } else if ($TARGET.hasClass('timeline__reset')) { 679 | this.$timelineYears.filter(`[data-year=${this.startYear}]`).addClass('timeline__year--active').siblings().removeClass('timeline__year--active') 680 | this.moveToYear(this.startYear) 681 | } else { 682 | $TARGET.removeClass('timeline__reset') 683 | $TARGET.addClass('timeline__pause') 684 | this.yearInterval = setInterval(() => { 685 | this.year += this.yearGap 686 | this.$timelineYears.filter(`[data-year=${this.year}]`).addClass('timeline__year--active').siblings().removeClass('timeline__year--active') 687 | this.circles 688 | .transition() 689 | .duration(300) 690 | .attr('r', (d) => { 691 | if (d[this.year] !== undefined) { 692 | if (this.mode === 'receiving') { 693 | return d[this.year].receiving_total > 0 ? this.radiusScale(parseFloat(d[this.year].receiving_total)) : 0 694 | } else { 695 | return d[this.year].sending_total > 0 ? this.radiusScale(parseFloat(d[this.year].sending_total)) : 0 696 | } 697 | } else { 698 | return 0 699 | } 700 | }) 701 | 702 | if(this.year >= this.endYear) { 703 | clearInterval(this.yearInterval) 704 | $TARGET.removeClass('timeline__pause') 705 | $TARGET.addClass('timeline__reset') 706 | } 707 | }, 1000) 708 | } 709 | } 710 | 711 | moveToYear(year) { 712 | this.year = parseInt(year) 713 | clearInterval(this.yearInterval) 714 | this.$start.removeClass('timeline__pause') 715 | if (this.year === this.endYear) { 716 | this.$start.addClass('timeline__reset') 717 | } else { 718 | this.$start.removeClass('timeline__reset') 719 | } 720 | 721 | this.circles 722 | .transition() 723 | .duration(300) 724 | .attr('r', (d) => { 725 | if (d[this.year] !== undefined) { 726 | if (this.mode === 'receiving') { 727 | return d[this.year].receiving_total > 0 ? this.radiusScale(parseFloat(d[this.year].receiving_total)) : 0 728 | } else { 729 | return d[this.year].sending_total > 0 ? this.radiusScale(parseFloat(d[this.year].sending_total)) : 0 730 | } 731 | } else { 732 | return 0 733 | } 734 | }) 735 | } 736 | } 737 | 738 | export default FlowMap 739 | -------------------------------------------------------------------------------- /data/african-aid.csv: -------------------------------------------------------------------------------- 1 | year,sending_name,amount,receiving_name 2 | 2014,Austria,0.164,Algeria 3 | 2014,Austria,0.259,Libya 4 | 2014,Austria,0.243,Morocco 5 | 2014,Austria,0.595,Tunisia 6 | 2014,Austria,3.053,Egypt 7 | 2014,Austria,0.403,South Africa 8 | 2014,Austria,0.024,Angola 9 | 2014,Austria,0.075,Burundi 10 | 2014,Austria,0.28,Cameroon 11 | 2014,Austria,0.265,Cabo Verde 12 | 2014,Austria,1.04,Central African Republic 13 | 2014,Austria,0.273,Chad 14 | 2014,Austria,0.011,Congo 15 | 2014,Austria,0.418,Democratic Republic of the Congo 16 | 2014,Austria,0.035,Benin 17 | 2014,Austria,9.673,Ethiopia 18 | 2014,Austria,0.093,Gabon 19 | 2014,Austria,0.08,Gambia 20 | 2014,Austria,3.264,Ghana 21 | 2014,Austria,0.027,Guinea 22 | 2014,Austria,0.024,Equatorial Guinea 23 | 2014,Austria,0.056,Côte d'Ivoire 24 | 2014,Austria,2.063,Kenya 25 | 2014,Austria,0.035,Madagascar 26 | 2014,Austria,0.08,Malawi 27 | 2014,Austria,0.414,Mali 28 | 2014,Austria,0.012,Mauritania 29 | 2014,Austria,0.011,Mauritius 30 | 2014,Austria,7.094,Mozambique 31 | 2014,Austria,0.062,Niger 32 | 2014,Austria,0.862,Nigeria 33 | 2014,Austria,0.347,Zimbabwe 34 | 2014,Austria,0.136,Rwanda 35 | 2014,Austria,0.012,São Tomé and Principe 36 | 2014,Austria,2.159,Senegal 37 | 2014,Austria,0.771,Sierra Leone 38 | 2014,Austria,0.154,Somalia 39 | 2014,Austria,0.037,Namibia 40 | 2014,Austria,0.296,Sudan 41 | 2014,Austria,1.359,South Sudan 42 | 2014,Austria,2.774,Tanzania 43 | 2014,Austria,0.075,Togo 44 | 2014,Austria,12.157,Uganda 45 | 2014,Austria,4.866,Burkina Faso 46 | 2014,Austria,0.024,Zambia 47 | 2014,Belgium,9.11,Algeria 48 | 2014,Belgium,0.1,Libya 49 | 2014,Belgium,19.57,Morocco 50 | 2014,Belgium,0.66,Tunisia 51 | 2014,Belgium,0.95,Egypt 52 | 2014,Belgium,19.25,South Africa 53 | 2014,Belgium,0.33,Angola 54 | 2014,Belgium,62.41,Burundi 55 | 2014,Belgium,9.56,Cameroon 56 | 2014,Belgium,6.45,Central African Republic 57 | 2014,Belgium,0.15,Comoros 58 | 2014,Belgium,0.01,Congo 59 | 2014,Belgium,150.61,Democratic Republic of the Congo 60 | 2014,Belgium,21.25,Benin 61 | 2014,Belgium,3.36,Ethiopia 62 | 2014,Belgium,0.27,Gambia 63 | 2014,Belgium,2.72,Ghana 64 | 2014,Belgium,3.74,Guinea 65 | 2014,Belgium,0.47,Guinea-Bissau 66 | 2014,Belgium,0.59,Côte d'Ivoire 67 | 2014,Belgium,8.59,Kenya 68 | 2014,Belgium,7,Liberia 69 | 2014,Belgium,3.19,Madagascar 70 | 2014,Belgium,8.34,Malawi 71 | 2014,Belgium,19.34,Mali 72 | 2014,Belgium,0.58,Mauritania 73 | 2014,Belgium,21.09,Mozambique 74 | 2014,Belgium,17.38,Niger 75 | 2014,Belgium,0.15,Nigeria 76 | 2014,Belgium,3.86,Zimbabwe 77 | 2014,Belgium,42.19,Rwanda 78 | 2014,Belgium,18.49,Senegal 79 | 2014,Belgium,0.01,Seychelles 80 | 2014,Belgium,1.37,Sierra Leone 81 | 2014,Belgium,0.02,Somalia 82 | 2014,Belgium,0.2,Namibia 83 | 2014,Belgium,0.91,Sudan 84 | 2014,Belgium,5.73,South Sudan 85 | 2014,Belgium,16.96,Tanzania 86 | 2014,Belgium,0.79,Togo 87 | 2014,Belgium,24.17,Uganda 88 | 2014,Belgium,10.57,Burkina Faso 89 | 2014,Belgium,1.15,Zambia 90 | 2014,Belgium,3.16,Kenya 91 | 2014,Belgium,0.98,Senegal 92 | 2014,Denmark,2.127,Libya 93 | 2014,Denmark,0.055,Morocco 94 | 2014,Denmark,5.75,Tunisia 95 | 2014,Denmark,3.221,Egypt 96 | 2014,Denmark,2.331,South Africa 97 | 2014,Denmark,0.516,Burundi 98 | 2014,Denmark,4.877,Central African Republic 99 | 2014,Denmark,0.73,Benin 100 | 2014,Denmark,16.872,Ethiopia 101 | 2014,Denmark,47.942,Ghana 102 | 2014,Denmark,0.133,Guinea-Bissau 103 | 2014,Denmark,0.748,Côte d'Ivoire 104 | 2014,Denmark,49.605,Kenya 105 | 2014,Denmark,0.204,Liberia 106 | 2014,Denmark,0.082,Malawi 107 | 2014,Denmark,34.959,Mali 108 | 2014,Denmark,67.635,Mozambique 109 | 2014,Denmark,10.46,Niger 110 | 2014,Denmark,32.424,Zimbabwe 111 | 2014,Denmark,4.147,Sierra Leone 112 | 2014,Denmark,36.333,Somalia 113 | 2014,Denmark,8.365,Sudan 114 | 2014,Denmark,38.433,South Sudan 115 | 2014,Denmark,70.769,Tanzania 116 | 2014,Denmark,51.258,Uganda 117 | 2014,Denmark,70.422,Burkina Faso 118 | 2014,Denmark,42.374,Zambia 119 | 2014,Denmark,1.255,Angola 120 | 2014,Denmark,4.355,Kenya 121 | 2014,Denmark,0.18,Uganda 122 | 2014,France,128.64,Algeria 123 | 2014,France,4.49,Libya 124 | 2014,France,201.14,Morocco 125 | 2014,France,93.72,Tunisia 126 | 2014,France,46.53,Egypt 127 | 2014,France,10.14,South Africa 128 | 2014,France,5.32,Angola 129 | 2014,France,0.77,Botswana 130 | 2014,France,12.17,Burundi 131 | 2014,France,131.11,Cameroon 132 | 2014,France,2.08,Cabo Verde 133 | 2014,France,49.1,Central African Republic 134 | 2014,France,33.53,Chad 135 | 2014,France,27.85,Comoros 136 | 2014,France,47.47,Congo 137 | 2014,France,39.72,Democratic Republic of the Congo 138 | 2014,France,42.99,Benin 139 | 2014,France,14.35,Ethiopia 140 | 2014,France,32.05,Gabon 141 | 2014,France,0.35,Gambia 142 | 2014,France,5,Ghana 143 | 2014,France,103.08,Guinea 144 | 2014,France,3.37,Guinea-Bissau 145 | 2014,France,4.05,Equatorial Guinea 146 | 2014,France,334.86,Côte d'Ivoire 147 | 2014,France,14.97,Kenya 148 | 2014,France,0.14,Lesotho 149 | 2014,France,1.48,Liberia 150 | 2014,France,69.52,Madagascar 151 | 2014,France,3.89,Malawi 152 | 2014,France,79.49,Mali 153 | 2014,France,30.48,Mauritania 154 | 2014,France,13.92,Mauritius 155 | 2014,France,10.94,Mozambique 156 | 2014,France,58.18,Niger 157 | 2014,France,7.59,Nigeria 158 | 2014,France,2.65,Zimbabwe 159 | 2014,France,7.24,Rwanda 160 | 2014,France,1.53,São Tomé and Principe 161 | 2014,France,108.08,Senegal 162 | 2014,France,2.04,Seychelles 163 | 2014,France,0.22,Eritrea 164 | 2014,France,0.19,Sierra Leone 165 | 2014,France,1.61,Somalia 166 | 2014,France,41.43,Djibouti 167 | 2014,France,0.74,Namibia 168 | 2014,France,4.76,Sudan 169 | 2014,France,2.89,South Sudan 170 | 2014,France,0.15,Swaziland 171 | 2014,France,3.32,Tanzania 172 | 2014,France,35.44,Togo 173 | 2014,France,1.47,Uganda 174 | 2014,France,68.97,Burkina Faso 175 | 2014,France,0.47,Zambia 176 | 2014,France,493.4,Morocco 177 | 2014,France,81.45,Tunisia 178 | 2014,France,65.06,Egypt 179 | 2014,France,128.05,South Africa 180 | 2014,France,91.14,Cameroon 181 | 2014,France,7.43,Cabo Verde 182 | 2014,France,4.07,Congo 183 | 2014,France,0.26,Democratic Republic of the Congo 184 | 2014,France,46.74,Ethiopia 185 | 2014,France,69.97,Gabon 186 | 2014,France,66.54,Ghana 187 | 2014,France,112.72,Kenya 188 | 2014,France,34.5,Mali 189 | 2014,France,0.36,Mauritania 190 | 2014,France,78.69,Mauritius 191 | 2014,France,74.57,Mozambique 192 | 2014,France,0.95,Niger 193 | 2014,France,74.27,Nigeria 194 | 2014,France,207.15,Senegal 195 | 2014,France,0.51,Seychelles 196 | 2014,France,19.48,Tanzania 197 | 2014,France,0.93,Togo 198 | 2014,France,8.22,Uganda 199 | 2014,France,7.7,Burkina Faso 200 | 2014,France,24.85,Zambia 201 | 2014,Germany,7.182,Algeria 202 | 2014,Germany,5.803,Libya 203 | 2014,Germany,55.657,Morocco 204 | 2014,Germany,59.225,Tunisia 205 | 2014,Germany,151.947,Egypt 206 | 2014,Germany,75.746,South Africa 207 | 2014,Germany,4.235,Angola 208 | 2014,Germany,0.231,Botswana 209 | 2014,Germany,25.851,Burundi 210 | 2014,Germany,88.31,Cameroon 211 | 2014,Germany,0.489,Cabo Verde 212 | 2014,Germany,27.858,Central African Republic 213 | 2014,Germany,13.615,Chad 214 | 2014,Germany,0.649,Congo 215 | 2014,Germany,91.548,Democratic Republic of the Congo 216 | 2014,Germany,77.705,Benin 217 | 2014,Germany,59.555,Ethiopia 218 | 2014,Germany,1.814,Gabon 219 | 2014,Germany,0.356,Gambia 220 | 2014,Germany,34.35,Ghana 221 | 2014,Germany,14.631,Guinea 222 | 2014,Germany,0.3,Guinea-Bissau 223 | 2014,Germany,0.05,Equatorial Guinea 224 | 2014,Germany,18.732,Côte d'Ivoire 225 | 2014,Germany,78.652,Kenya 226 | 2014,Germany,4.298,Lesotho 227 | 2014,Germany,41.001,Liberia 228 | 2014,Germany,18.177,Madagascar 229 | 2014,Germany,33.975,Malawi 230 | 2014,Germany,74.656,Mali 231 | 2014,Germany,14.442,Mauritania 232 | 2014,Germany,0.476,Mauritius 233 | 2014,Germany,78.095,Mozambique 234 | 2014,Germany,26.889,Niger 235 | 2014,Germany,48.266,Nigeria 236 | 2014,Germany,35.587,Zimbabwe 237 | 2014,Germany,35.768,Rwanda 238 | 2014,Germany,0.002,São Tomé and Principe 239 | 2014,Germany,22.768,Senegal 240 | 2014,Germany,0.011,Seychelles 241 | 2014,Germany,0.489,Eritrea 242 | 2014,Germany,25.048,Sierra Leone 243 | 2014,Germany,26.645,Somalia 244 | 2014,Germany,1.101,Djibouti 245 | 2014,Germany,40.072,Namibia 246 | 2014,Germany,17.502,Sudan 247 | 2014,Germany,91.73,South Sudan 248 | 2014,Germany,0.252,Swaziland 249 | 2014,Germany,52.123,Tanzania 250 | 2014,Germany,28.792,Togo 251 | 2014,Germany,48.216,Uganda 252 | 2014,Germany,49.846,Burkina Faso 253 | 2014,Germany,38.18,Zambia 254 | 2014,Germany,421.478,Morocco 255 | 2014,Germany,15.228,Tunisia 256 | 2014,Germany,123.94,Egypt 257 | 2014,Germany,68.981,South Africa 258 | 2014,Germany,0.245,Cameroon 259 | 2014,Germany,0.967,Democratic Republic of the Congo 260 | 2014,Germany,2.349,Ghana 261 | 2014,Germany,43.546,Kenya 262 | 2014,Germany,0.002,Mozambique 263 | 2014,Germany,13.931,Nigeria 264 | 2014,Germany,0.119,Namibia 265 | 2014,Italy,0.76,Algeria 266 | 2014,Italy,0.73,Libya 267 | 2014,Italy,3.1,Morocco 268 | 2014,Italy,3.94,Tunisia 269 | 2014,Italy,21.85,Egypt 270 | 2014,Italy,10.19,South Africa 271 | 2014,Italy,1.67,Angola 272 | 2014,Italy,0.52,Burundi 273 | 2014,Italy,3.09,Cameroon 274 | 2014,Italy,0.03,Cabo Verde 275 | 2014,Italy,0.9,Central African Republic 276 | 2014,Italy,0.23,Chad 277 | 2014,Italy,0.09,Comoros 278 | 2014,Italy,0.69,Congo 279 | 2014,Italy,8.45,Democratic Republic of the Congo 280 | 2014,Italy,1.42,Benin 281 | 2014,Italy,30.09,Ethiopia 282 | 2014,Italy,0.08,Gabon 283 | 2014,Italy,0.02,Gambia 284 | 2014,Italy,1.4,Ghana 285 | 2014,Italy,2.2,Guinea 286 | 2014,Italy,0.99,Guinea-Bissau 287 | 2014,Italy,0.54,Côte d'Ivoire 288 | 2014,Italy,7.56,Kenya 289 | 2014,Italy,4.53,Madagascar 290 | 2014,Italy,0.34,Malawi 291 | 2014,Italy,2.69,Mali 292 | 2014,Italy,1.05,Mauritania 293 | 2014,Italy,23.66,Mozambique 294 | 2014,Italy,3.44,Niger 295 | 2014,Italy,0.12,Nigeria 296 | 2014,Italy,0.19,Zimbabwe 297 | 2014,Italy,2.96,Rwanda 298 | 2014,Italy,7.16,Senegal 299 | 2014,Italy,0.09,Seychelles 300 | 2014,Italy,0.97,Eritrea 301 | 2014,Italy,9.96,Sierra Leone 302 | 2014,Italy,7.6,Somalia 303 | 2014,Italy,0.21,Djibouti 304 | 2014,Italy,0.2,Namibia 305 | 2014,Italy,8.83,Sudan 306 | 2014,Italy,8.04,South Sudan 307 | 2014,Italy,0.19,Swaziland 308 | 2014,Italy,4.96,Tanzania 309 | 2014,Italy,1.1,Togo 310 | 2014,Italy,7.08,Uganda 311 | 2014,Italy,7.37,Burkina Faso 312 | 2014,Italy,0.38,Zambia 313 | 2014,Italy,19.07,Tunisia 314 | 2014,Netherlands,0.066,Algeria 315 | 2014,Netherlands,0.382,Libya 316 | 2014,Netherlands,1.285,Morocco 317 | 2014,Netherlands,2.106,Tunisia 318 | 2014,Netherlands,0.878,Egypt 319 | 2014,Netherlands,3.103,South Africa 320 | 2014,Netherlands,0.051,Angola 321 | 2014,Netherlands,0.169,Botswana 322 | 2014,Netherlands,27.642,Burundi 323 | 2014,Netherlands,17.498,Central African Republic 324 | 2014,Netherlands,9.942,Democratic Republic of the Congo 325 | 2014,Netherlands,42.579,Benin 326 | 2014,Netherlands,89.953,Ethiopia 327 | 2014,Netherlands,31.041,Ghana 328 | 2014,Netherlands,32.534,Kenya 329 | 2014,Netherlands,6.791,Liberia 330 | 2014,Netherlands,44.363,Mali 331 | 2014,Netherlands,47.675,Mozambique 332 | 2014,Netherlands,2.588,Nigeria 333 | 2014,Netherlands,2.002,Zimbabwe 334 | 2014,Netherlands,50.656,Rwanda 335 | 2014,Netherlands,4.251,Senegal 336 | 2014,Netherlands,7.954,Sierra Leone 337 | 2014,Netherlands,6.243,Somalia 338 | 2014,Netherlands,1.327,Djibouti 339 | 2014,Netherlands,0.122,Namibia 340 | 2014,Netherlands,5.907,Sudan 341 | 2014,Netherlands,54.803,South Sudan 342 | 2014,Netherlands,0.596,Tanzania 343 | 2014,Netherlands,21.923,Uganda 344 | 2014,Netherlands,0.042,Zambia 345 | 2014,Norway,0.055,Algeria 346 | 2014,Norway,0.497,Morocco 347 | 2014,Norway,1.051,Tunisia 348 | 2014,Norway,2.595,Egypt 349 | 2014,Norway,9.844,South Africa 350 | 2014,Norway,12.226,Angola 351 | 2014,Norway,0.141,Botswana 352 | 2014,Norway,7.228,Burundi 353 | 2014,Norway,1.065,Cameroon 354 | 2014,Norway,0.058,Cabo Verde 355 | 2014,Norway,18.458,Central African Republic 356 | 2014,Norway,0.486,Congo 357 | 2014,Norway,36.445,Democratic Republic of the Congo 358 | 2014,Norway,60.68,Ethiopia 359 | 2014,Norway,0.097,Gabon 360 | 2014,Norway,0.197,Gambia 361 | 2014,Norway,6.495,Ghana 362 | 2014,Norway,0.657,Guinea 363 | 2014,Norway,0.022,Guinea-Bissau 364 | 2014,Norway,1.092,Côte d'Ivoire 365 | 2014,Norway,16.925,Kenya 366 | 2014,Norway,1.124,Lesotho 367 | 2014,Norway,38.528,Liberia 368 | 2014,Norway,11.376,Madagascar 369 | 2014,Norway,84.96,Malawi 370 | 2014,Norway,20.172,Mali 371 | 2014,Norway,0.762,Mauritania 372 | 2014,Norway,0.113,Mauritius 373 | 2014,Norway,59.294,Mozambique 374 | 2014,Norway,10.399,Niger 375 | 2014,Norway,12.658,Nigeria 376 | 2014,Norway,21.477,Zimbabwe 377 | 2014,Norway,2.287,Rwanda 378 | 2014,Norway,0.335,São Tomé and Principe 379 | 2014,Norway,1.009,Senegal 380 | 2014,Norway,0.135,Eritrea 381 | 2014,Norway,1.489,Sierra Leone 382 | 2014,Norway,63.379,Somalia 383 | 2014,Norway,0.476,Djibouti 384 | 2014,Norway,1.49,Namibia 385 | 2014,Norway,28.884,Sudan 386 | 2014,Norway,95.939,South Sudan 387 | 2014,Norway,0.694,Swaziland 388 | 2014,Norway,72.04,Tanzania 389 | 2014,Norway,0.17,Togo 390 | 2014,Norway,65.25,Uganda 391 | 2014,Norway,0.745,Burkina Faso 392 | 2014,Norway,31.036,Zambia 393 | 2014,Portugal,0.081,Algeria 394 | 2014,Portugal,0.494,Morocco 395 | 2014,Portugal,0.072,Tunisia 396 | 2014,Portugal,0.123,Egypt 397 | 2014,Portugal,1.621,South Africa 398 | 2014,Portugal,4.899,Angola 399 | 2014,Portugal,0.073,Botswana 400 | 2014,Portugal,0.028,Cameroon 401 | 2014,Portugal,30.341,Cabo Verde 402 | 2014,Portugal,0.139,Central African Republic 403 | 2014,Portugal,0.025,Congo 404 | 2014,Portugal,0.028,Democratic Republic of the Congo 405 | 2014,Portugal,0.049,Ethiopia 406 | 2014,Portugal,0.004,Gambia 407 | 2014,Portugal,0.008,Ghana 408 | 2014,Portugal,0.043,Guinea 409 | 2014,Portugal,11.158,Guinea-Bissau 410 | 2014,Portugal,0.136,Equatorial Guinea 411 | 2014,Portugal,0.09,Côte d'Ivoire 412 | 2014,Portugal,0.116,Mali 413 | 2014,Portugal,0.004,Mauritania 414 | 2014,Portugal,29.126,Mozambique 415 | 2014,Portugal,0.013,Nigeria 416 | 2014,Portugal,0.084,Zimbabwe 417 | 2014,Portugal,0.206,Rwanda 418 | 2014,Portugal,13.383,São Tomé and Principe 419 | 2014,Portugal,0.078,Senegal 420 | 2014,Portugal,0.088,Sierra Leone 421 | 2014,Portugal,0.069,Somalia 422 | 2014,Portugal,0.361,Namibia 423 | 2014,Portugal,0.124,Swaziland 424 | 2014,Portugal,0.008,Tanzania 425 | 2014,Portugal,0.004,Togo 426 | 2014,Portugal,111.335,Cabo Verde 427 | 2014,Portugal,35.615,Mozambique 428 | 2014,Sweden,0.833,Algeria 429 | 2014,Sweden,7.22,Libya 430 | 2014,Sweden,0.278,Morocco 431 | 2014,Sweden,6.128,Tunisia 432 | 2014,Sweden,11.17,Egypt 433 | 2014,Sweden,7.38,South Africa 434 | 2014,Sweden,1.452,Angola 435 | 2014,Sweden,0.572,Botswana 436 | 2014,Sweden,1.284,Burundi 437 | 2014,Sweden,2.243,Cameroon 438 | 2014,Sweden,0.129,Cabo Verde 439 | 2014,Sweden,12.871,Central African Republic 440 | 2014,Sweden,10.272,Chad 441 | 2014,Sweden,0.468,Congo 442 | 2014,Sweden,61.943,Democratic Republic of the Congo 443 | 2014,Sweden,0.858,Benin 444 | 2014,Sweden,35.266,Ethiopia 445 | 2014,Sweden,0.628,Gambia 446 | 2014,Sweden,0.827,Ghana 447 | 2014,Sweden,2.173,Guinea 448 | 2014,Sweden,0.207,Guinea-Bissau 449 | 2014,Sweden,1.804,Côte d'Ivoire 450 | 2014,Sweden,73.111,Kenya 451 | 2014,Sweden,0.12,Lesotho 452 | 2014,Sweden,39.498,Liberia 453 | 2014,Sweden,1.019,Madagascar 454 | 2014,Sweden,2.412,Malawi 455 | 2014,Sweden,33.893,Mali 456 | 2014,Sweden,2.633,Mauritania 457 | 2014,Sweden,119.783,Mozambique 458 | 2014,Sweden,7.545,Niger 459 | 2014,Sweden,1.032,Nigeria 460 | 2014,Sweden,34.85,Zimbabwe 461 | 2014,Sweden,39.086,Rwanda 462 | 2014,Sweden,1.074,Senegal 463 | 2014,Sweden,0.747,Eritrea 464 | 2014,Sweden,3.162,Sierra Leone 465 | 2014,Sweden,83.054,Somalia 466 | 2014,Sweden,2.205,Djibouti 467 | 2014,Sweden,2.173,Namibia 468 | 2014,Sweden,23.367,Sudan 469 | 2014,Sweden,56.577,South Sudan 470 | 2014,Sweden,2.428,Swaziland 471 | 2014,Sweden,54.193,Tanzania 472 | 2014,Sweden,1.302,Togo 473 | 2014,Sweden,36.242,Uganda 474 | 2014,Sweden,19.743,Burkina Faso 475 | 2014,Sweden,52.155,Zambia 476 | 2014,Switzerland,4.04,Algeria 477 | 2014,Switzerland,4.55,Libya 478 | 2014,Switzerland,8.17,Morocco 479 | 2014,Switzerland,18.11,Tunisia 480 | 2014,Switzerland,24.06,Egypt 481 | 2014,Switzerland,11.23,South Africa 482 | 2014,Switzerland,0.19,Angola 483 | 2014,Switzerland,10.46,Burundi 484 | 2014,Switzerland,3.21,Cameroon 485 | 2014,Switzerland,0.14,Cabo Verde 486 | 2014,Switzerland,7.67,Central African Republic 487 | 2014,Switzerland,31.39,Chad 488 | 2014,Switzerland,0.06,Comoros 489 | 2014,Switzerland,0.18,Congo 490 | 2014,Switzerland,19.44,Democratic Republic of the Congo 491 | 2014,Switzerland,19.59,Benin 492 | 2014,Switzerland,14.26,Ethiopia 493 | 2014,Switzerland,0.01,Gabon 494 | 2014,Switzerland,0,Gambia 495 | 2014,Switzerland,18.16,Ghana 496 | 2014,Switzerland,5.35,Guinea 497 | 2014,Switzerland,0.65,Guinea-Bissau 498 | 2014,Switzerland,0.01,Equatorial Guinea 499 | 2014,Switzerland,2.56,Côte d'Ivoire 500 | 2014,Switzerland,9.53,Kenya 501 | 2014,Switzerland,0.79,Lesotho 502 | 2014,Switzerland,14.02,Liberia 503 | 2014,Switzerland,6.93,Madagascar 504 | 2014,Switzerland,0.84,Malawi 505 | 2014,Switzerland,37.78,Mali 506 | 2014,Switzerland,0.32,Mauritania 507 | 2014,Switzerland,37.24,Mozambique 508 | 2014,Switzerland,27.29,Niger 509 | 2014,Switzerland,2.34,Nigeria 510 | 2014,Switzerland,15.38,Zimbabwe 511 | 2014,Switzerland,8.12,Rwanda 512 | 2014,Switzerland,3.02,Senegal 513 | 2014,Switzerland,0.3,Eritrea 514 | 2014,Switzerland,2.8,Sierra Leone 515 | 2014,Switzerland,20.23,Somalia 516 | 2014,Switzerland,0.01,Djibouti 517 | 2014,Switzerland,0.76,Namibia 518 | 2014,Switzerland,14.39,Sudan 519 | 2014,Switzerland,25.98,South Sudan 520 | 2014,Switzerland,0.12,Swaziland 521 | 2014,Switzerland,30.82,Tanzania 522 | 2014,Switzerland,2.74,Togo 523 | 2014,Switzerland,1.14,Uganda 524 | 2014,Switzerland,32.85,Burkina Faso 525 | 2014,Switzerland,0.56,Zambia 526 | 2014,United Kingdom,5.216,Algeria 527 | 2014,United Kingdom,47.786,Libya 528 | 2014,United Kingdom,6.606,Morocco 529 | 2014,United Kingdom,11.278,Tunisia 530 | 2014,United Kingdom,14.006,Egypt 531 | 2014,United Kingdom,36.807,South Africa 532 | 2014,United Kingdom,1.508,Angola 533 | 2014,United Kingdom,1.028,Botswana 534 | 2014,United Kingdom,10.056,Burundi 535 | 2014,United Kingdom,18.262,Cameroon 536 | 2014,United Kingdom,0.131,Cabo Verde 537 | 2014,United Kingdom,26.448,Central African Republic 538 | 2014,United Kingdom,0.01,Comoros 539 | 2014,United Kingdom,274.199,Democratic Republic of the Congo 540 | 2014,United Kingdom,532.281,Ethiopia 541 | 2014,United Kingdom,16.289,Gambia 542 | 2014,United Kingdom,100.052,Ghana 543 | 2014,United Kingdom,0.462,Guinea 544 | 2014,United Kingdom,0.121,Guinea-Bissau 545 | 2014,United Kingdom,0.13,Côte d'Ivoire 546 | 2014,United Kingdom,210.349,Kenya 547 | 2014,United Kingdom,0.383,Lesotho 548 | 2014,United Kingdom,9.542,Liberia 549 | 2014,United Kingdom,1.828,Madagascar 550 | 2014,United Kingdom,120.658,Malawi 551 | 2014,United Kingdom,3.341,Mali 552 | 2014,United Kingdom,0.94,Mauritania 553 | 2014,United Kingdom,1.342,Mauritius 554 | 2014,United Kingdom,136.92,Mozambique 555 | 2014,United Kingdom,0.007,Niger 556 | 2014,United Kingdom,387.881,Nigeria 557 | 2014,United Kingdom,165.273,Zimbabwe 558 | 2014,United Kingdom,78.997,Rwanda 559 | 2014,United Kingdom,0.157,São Tomé and Principe 560 | 2014,United Kingdom,2.911,Senegal 561 | 2014,United Kingdom,0.626,Seychelles 562 | 2014,United Kingdom,9.676,Eritrea 563 | 2014,United Kingdom,391.403,Sierra Leone 564 | 2014,United Kingdom,205.751,Somalia 565 | 2014,United Kingdom,0.478,Namibia 566 | 2014,United Kingdom,124.715,Saint Helena 567 | 2014,United Kingdom,82.655,Sudan 568 | 2014,United Kingdom,275.313,South Sudan 569 | 2014,United Kingdom,0.069,Swaziland 570 | 2014,United Kingdom,244.209,Tanzania 571 | 2014,United Kingdom,198.188,Uganda 572 | 2014,United Kingdom,0.448,Burkina Faso 573 | 2014,United Kingdom,137.388,Zambia 574 | 2014,United Kingdom,11.011,Algeria 575 | 2014,United Kingdom,6.696,Morocco 576 | 2014,United Kingdom,1.956,Tunisia 577 | 2014,United Kingdom,0.535,Egypt 578 | 2014,United Kingdom,47.886,South Africa 579 | 2014,United Kingdom,69.976,Cameroon 580 | 2014,United Kingdom,1.041,Democratic Republic of the Congo 581 | 2014,United Kingdom,1.717,Ethiopia 582 | 2014,United Kingdom,9.899,Ghana 583 | 2014,United Kingdom,6.352,Côte d'Ivoire 584 | 2014,United Kingdom,21.635,Kenya 585 | 2014,United Kingdom,0.664,Malawi 586 | 2014,United Kingdom,0.124,Mali 587 | 2014,United Kingdom,1.465,Mauritius 588 | 2014,United Kingdom,1.378,Mozambique 589 | 2014,United Kingdom,0.175,Niger 590 | 2014,United Kingdom,18.859,Nigeria 591 | 2014,United Kingdom,6.149,Zimbabwe 592 | 2014,United Kingdom,0.169,Rwanda 593 | 2014,United Kingdom,0.178,Sierra Leone 594 | 2014,United Kingdom,1.499,Swaziland 595 | 2014,United Kingdom,1.905,Tanzania 596 | 2014,United Kingdom,3.899,Uganda 597 | 2014,United Kingdom,0.248,Burkina Faso 598 | 2014,United Kingdom,12.845,Zambia 599 | 2014,Finland,0.201,Algeria 600 | 2014,Finland,1.131,Libya 601 | 2014,Finland,0.468,Morocco 602 | 2014,Finland,0.749,Tunisia 603 | 2014,Finland,2.245,Egypt 604 | 2014,Finland,3.183,South Africa 605 | 2014,Finland,0.791,Angola 606 | 2014,Finland,0.48,Botswana 607 | 2014,Finland,0.858,Burundi 608 | 2014,Finland,2.537,Cameroon 609 | 2014,Finland,6.061,Central African Republic 610 | 2014,Finland,3.108,Chad 611 | 2014,Finland,0.013,Comoros 612 | 2014,Finland,3.841,Democratic Republic of the Congo 613 | 2014,Finland,0.11,Benin 614 | 2014,Finland,38.446,Ethiopia 615 | 2014,Finland,0.01,Gabon 616 | 2014,Finland,0.318,Gambia 617 | 2014,Finland,1.64,Ghana 618 | 2014,Finland,0.04,Guinea 619 | 2014,Finland,0.494,Côte d'Ivoire 620 | 2014,Finland,38.885,Kenya 621 | 2014,Finland,0.119,Lesotho 622 | 2014,Finland,0.289,Liberia 623 | 2014,Finland,0.154,Madagascar 624 | 2014,Finland,1.828,Malawi 625 | 2014,Finland,0.934,Mali 626 | 2014,Finland,0.245,Mauritania 627 | 2014,Finland,0.75,Mauritius 628 | 2014,Finland,28.489,Mozambique 629 | 2014,Finland,0.94,Nigeria 630 | 2014,Finland,0.484,Zimbabwe 631 | 2014,Finland,0.089,Rwanda 632 | 2014,Finland,1.064,Senegal 633 | 2014,Finland,2.286,Sierra Leone 634 | 2014,Finland,27.473,Somalia 635 | 2014,Finland,0.009,Djibouti 636 | 2014,Finland,5.499,Namibia 637 | 2014,Finland,9.084,Sudan 638 | 2014,Finland,4.57,South Sudan 639 | 2014,Finland,0.436,Swaziland 640 | 2014,Finland,54.041,Tanzania 641 | 2014,Finland,0.294,Togo 642 | 2014,Finland,4.654,Uganda 643 | 2014,Finland,0.262,Burkina Faso 644 | 2014,Finland,28.638,Zambia 645 | 2014,Finland,1.475,South Africa 646 | 2014,Finland,2.439,Ethiopia 647 | 2014,Finland,17.982,Kenya 648 | 2014,Finland,0.2,Mauritius 649 | 2014,Finland,0.18,Sierra Leone 650 | 2014,Finland,0.179,Tanzania 651 | 2014,Iceland,0.056,South Africa 652 | 2014,Iceland,0.111,Central African Republic 653 | 2014,Iceland,0.416,Ethiopia 654 | 2014,Iceland,0.093,Guinea-Bissau 655 | 2014,Iceland,5.288,Malawi 656 | 2014,Iceland,2.747,Mozambique 657 | 2014,Iceland,0.214,Sierra Leone 658 | 2014,Iceland,0.076,Namibia 659 | 2014,Iceland,0.104,South Sudan 660 | 2014,Iceland,3.335,Uganda 661 | 2014,Ireland,0.82,Egypt 662 | 2014,Ireland,6.16,South Africa 663 | 2014,Ireland,0.6,Angola 664 | 2014,Ireland,1.2,Burundi 665 | 2014,Ireland,0.76,Cameroon 666 | 2014,Ireland,7.7,Central African Republic 667 | 2014,Ireland,2.12,Chad 668 | 2014,Ireland,9.83,Congo 669 | 2014,Ireland,0.15,Benin 670 | 2014,Ireland,48.27,Ethiopia 671 | 2014,Ireland,0.01,Gabon 672 | 2014,Ireland,0.07,Gambia 673 | 2014,Ireland,1.05,Ghana 674 | 2014,Ireland,0.48,Guinea 675 | 2014,Ireland,0.31,Guinea-Bissau 676 | 2014,Ireland,8.63,Kenya 677 | 2014,Ireland,1.75,Lesotho 678 | 2014,Ireland,8.56,Liberia 679 | 2014,Ireland,25.81,Malawi 680 | 2014,Ireland,1.45,Mali 681 | 2014,Ireland,0.31,Mauritania 682 | 2014,Ireland,53.27,Mozambique 683 | 2014,Ireland,3.02,Niger 684 | 2014,Ireland,0.65,Nigeria 685 | 2014,Ireland,8.81,Zimbabwe 686 | 2014,Ireland,3.13,Rwanda 687 | 2014,Ireland,0.34,Senegal 688 | 2014,Ireland,0.17,Eritrea 689 | 2014,Ireland,16.26,Sierra Leone 690 | 2014,Ireland,7.62,Somalia 691 | 2014,Ireland,0.18,Djibouti 692 | 2014,Ireland,0.03,Namibia 693 | 2014,Ireland,7.89,Sudan 694 | 2014,Ireland,12.82,South Sudan 695 | 2014,Ireland,0.03,Swaziland 696 | 2014,Ireland,33.13,Tanzania 697 | 2014,Ireland,37.04,Uganda 698 | 2014,Ireland,0.41,Burkina Faso 699 | 2014,Ireland,23.24,Zambia 700 | 2014,Luxembourg,0.268,Libya 701 | 2014,Luxembourg,0.168,Morocco 702 | 2014,Luxembourg,1.541,Tunisia 703 | 2014,Luxembourg,0.144,Egypt 704 | 2014,Luxembourg,0.315,South Africa 705 | 2014,Luxembourg,0.991,Burundi 706 | 2014,Luxembourg,0.538,Cameroon 707 | 2014,Luxembourg,15.169,Cabo Verde 708 | 2014,Luxembourg,3.722,Central African Republic 709 | 2014,Luxembourg,0.085,Comoros 710 | 2014,Luxembourg,0.093,Congo 711 | 2014,Luxembourg,3.582,Democratic Republic of the Congo 712 | 2014,Luxembourg,1.443,Benin 713 | 2014,Luxembourg,0.883,Ethiopia 714 | 2014,Luxembourg,0.286,Gambia 715 | 2014,Luxembourg,0.25,Ghana 716 | 2014,Luxembourg,0.705,Guinea 717 | 2014,Luxembourg,0.008,Guinea-Bissau 718 | 2014,Luxembourg,0.156,Côte d'Ivoire 719 | 2014,Luxembourg,0.432,Kenya 720 | 2014,Luxembourg,0.254,Liberia 721 | 2014,Luxembourg,0.278,Madagascar 722 | 2014,Luxembourg,0.262,Malawi 723 | 2014,Luxembourg,13.364,Mali 724 | 2014,Luxembourg,19.761,Niger 725 | 2014,Luxembourg,0.332,Nigeria 726 | 2014,Luxembourg,0.482,Rwanda 727 | 2014,Luxembourg,22.119,Senegal 728 | 2014,Luxembourg,0.176,Sierra Leone 729 | 2014,Luxembourg,0.423,Somalia 730 | 2014,Luxembourg,1.328,Sudan 731 | 2014,Luxembourg,3.467,South Sudan 732 | 2014,Luxembourg,0.172,Swaziland 733 | 2014,Luxembourg,0.072,Tanzania 734 | 2014,Luxembourg,1.049,Togo 735 | 2014,Luxembourg,0.114,Uganda 736 | 2014,Luxembourg,31.069,Burkina Faso 737 | 2014,Luxembourg,0.153,Zambia 738 | 2014,Cyprus,0.006,Uganda 739 | 2014,Greece,0.168,Algeria 740 | 2014,Greece,0.045,Libya 741 | 2014,Greece,0.039,Morocco 742 | 2014,Greece,0.274,Tunisia 743 | 2014,Greece,0.732,Egypt 744 | 2014,Greece,0.09,South Africa 745 | 2014,Greece,0.007,Angola 746 | 2014,Greece,0.018,Burundi 747 | 2014,Greece,0.133,Cameroon 748 | 2014,Greece,0.011,Cabo Verde 749 | 2014,Greece,0.066,Central African Republic 750 | 2014,Greece,0.008,Chad 751 | 2014,Greece,0.254,Congo 752 | 2014,Greece,0.835,Democratic Republic of the Congo 753 | 2014,Greece,0.09,Ethiopia 754 | 2014,Greece,0.018,Gambia 755 | 2014,Greece,0.007,Guinea 756 | 2014,Greece,0.018,Guinea-Bissau 757 | 2014,Greece,0.008,Côte d'Ivoire 758 | 2014,Greece,0.044,Kenya 759 | 2014,Greece,0.066,Mali 760 | 2014,Greece,0.004,Mauritania 761 | 2014,Greece,0.002,Mauritius 762 | 2014,Greece,0.035,Nigeria 763 | 2014,Greece,0.05,Zimbabwe 764 | 2014,Greece,0.022,São Tomé and Principe 765 | 2014,Greece,0.008,Senegal 766 | 2014,Greece,0.022,Sierra Leone 767 | 2014,Greece,0.008,Somalia 768 | 2014,Greece,0.007,Djibouti 769 | 2014,Greece,0.081,Sudan 770 | 2014,Greece,0.018,Togo 771 | 2014,Greece,0.045,Uganda 772 | 2014,Greece,0.008,Burkina Faso 773 | 2014,Greece,0.004,Zambia 774 | 2014,Malta,0.01,Morocco 775 | 2014,Malta,0.03,Central African Republic 776 | 2014,Malta,0.03,Chad 777 | 2014,Malta,0.05,Ethiopia 778 | 2014,Malta,0.04,Kenya 779 | 2014,Malta,0.03,Madagascar 780 | 2014,Malta,0.07,Somalia 781 | 2014,Malta,0.02,Tanzania 782 | 2014,Malta,0.01,Togo 783 | 2014,Malta,0.06,Uganda 784 | 2014,Spain,1.147,Algeria 785 | 2014,Spain,24.197,Morocco 786 | 2014,Spain,0.436,Tunisia 787 | 2014,Spain,1.708,Egypt 788 | 2014,Spain,0.031,South Africa 789 | 2014,Spain,0.252,Angola 790 | 2014,Spain,0.01,Botswana 791 | 2014,Spain,0.222,Burundi 792 | 2014,Spain,1.066,Cameroon 793 | 2014,Spain,0.547,Cabo Verde 794 | 2014,Spain,1.421,Central African Republic 795 | 2014,Spain,0.849,Chad 796 | 2014,Spain,0.304,Congo 797 | 2014,Spain,5.308,Democratic Republic of the Congo 798 | 2014,Spain,0.613,Benin 799 | 2014,Spain,7.965,Ethiopia 800 | 2014,Spain,0.009,Gabon 801 | 2014,Spain,0.263,Gambia 802 | 2014,Spain,0.144,Ghana 803 | 2014,Spain,4.262,Guinea 804 | 2014,Spain,0.467,Guinea-Bissau 805 | 2014,Spain,1.918,Equatorial Guinea 806 | 2014,Spain,0.489,Côte d'Ivoire 807 | 2014,Spain,0.65,Kenya 808 | 2014,Spain,2.539,Liberia 809 | 2014,Spain,0.807,Madagascar 810 | 2014,Spain,0.319,Malawi 811 | 2014,Spain,12.656,Mali 812 | 2014,Spain,8.028,Mauritania 813 | 2014,Spain,11.513,Mozambique 814 | 2014,Spain,17.437,Niger 815 | 2014,Spain,0.149,Nigeria 816 | 2014,Spain,0.225,Zimbabwe 817 | 2014,Spain,0.803,Rwanda 818 | 2014,Spain,12.562,Senegal 819 | 2014,Spain,7.731,Sierra Leone 820 | 2014,Spain,0.027,Somalia 821 | 2014,Spain,0.045,Namibia 822 | 2014,Spain,0.029,Sudan 823 | 2014,Spain,2.503,South Sudan 824 | 2014,Spain,0.017,Swaziland 825 | 2014,Spain,1.006,Tanzania 826 | 2014,Spain,0.752,Togo 827 | 2014,Spain,0.193,Uganda 828 | 2014,Spain,2.026,Burkina Faso 829 | 2014,Spain,1.493,Angola 830 | 2014,Spain,0.242,Mauritania 831 | 2014,Turkey,3.29,Algeria 832 | 2014,Turkey,12.87,Libya 833 | 2014,Turkey,2.67,Morocco 834 | 2014,Turkey,3.17,Tunisia 835 | 2014,Turkey,5.32,Egypt 836 | 2014,Turkey,1.09,South Africa 837 | 2014,Turkey,0.06,Angola 838 | 2014,Turkey,0.08,Botswana 839 | 2014,Turkey,0.72,Burundi 840 | 2014,Turkey,1.98,Cameroon 841 | 2014,Turkey,0.04,Cabo Verde 842 | 2014,Turkey,1.49,Central African Republic 843 | 2014,Turkey,1.4,Chad 844 | 2014,Turkey,0.43,Comoros 845 | 2014,Turkey,0.25,Congo 846 | 2014,Turkey,1.36,Democratic Republic of the Congo 847 | 2014,Turkey,0.59,Benin 848 | 2014,Turkey,3.65,Ethiopia 849 | 2014,Turkey,0.36,Gabon 850 | 2014,Turkey,1.83,Gambia 851 | 2014,Turkey,3.01,Ghana 852 | 2014,Turkey,0.9,Guinea 853 | 2014,Turkey,1.17,Guinea-Bissau 854 | 2014,Turkey,0.02,Equatorial Guinea 855 | 2014,Turkey,1.2,Côte d'Ivoire 856 | 2014,Turkey,3.32,Kenya 857 | 2014,Turkey,0.12,Lesotho 858 | 2014,Turkey,0.77,Liberia 859 | 2014,Turkey,0.63,Madagascar 860 | 2014,Turkey,0.36,Malawi 861 | 2014,Turkey,1.53,Mali 862 | 2014,Turkey,4.48,Mauritania 863 | 2014,Turkey,0.19,Mauritius 864 | 2014,Turkey,0.75,Mozambique 865 | 2014,Turkey,4.13,Niger 866 | 2014,Turkey,0.98,Nigeria 867 | 2014,Turkey,0.51,Zimbabwe 868 | 2014,Turkey,0.61,Rwanda 869 | 2014,Turkey,0.24,São Tomé and Principe 870 | 2014,Turkey,2.85,Senegal 871 | 2014,Turkey,0.04,Seychelles 872 | 2014,Turkey,0.12,Eritrea 873 | 2014,Turkey,0.45,Sierra Leone 874 | 2014,Turkey,74.35,Somalia 875 | 2014,Turkey,2.97,Djibouti 876 | 2014,Turkey,0.15,Namibia 877 | 2014,Turkey,9.36,Sudan 878 | 2014,Turkey,1.5,South Sudan 879 | 2014,Turkey,0.15,Swaziland 880 | 2014,Turkey,1.72,Tanzania 881 | 2014,Turkey,0.3,Togo 882 | 2014,Turkey,2.01,Uganda 883 | 2014,Turkey,4.15,Burkina Faso 884 | 2014,Turkey,0.53,Zambia 885 | 2014,Turkey,197.53,Tunisia 886 | 2014,Slovenia,0.028,Egypt 887 | 2014,Slovenia,0.04,Burundi 888 | 2014,Slovenia,0.017,Cabo Verde 889 | 2014,Slovenia,0.04,Central African Republic 890 | 2014,Slovenia,0.08,Rwanda 891 | 2014,Slovenia,0.04,South Sudan 892 | 2014,Slovenia,0.04,Uganda 893 | 2014,Czech Republic,0.1,Algeria 894 | 2014,Czech Republic,0.05,Libya 895 | 2014,Czech Republic,0.01,Morocco 896 | 2014,Czech Republic,0.071,Tunisia 897 | 2014,Czech Republic,0.296,Egypt 898 | 2014,Czech Republic,0.017,South Africa 899 | 2014,Czech Republic,0.056,Angola 900 | 2014,Czech Republic,0.02,Cameroon 901 | 2014,Czech Republic,0.005,Cabo Verde 902 | 2014,Czech Republic,0.361,Central African Republic 903 | 2014,Czech Republic,0.096,Chad 904 | 2014,Czech Republic,0.014,Congo 905 | 2014,Czech Republic,0.07,Democratic Republic of the Congo 906 | 2014,Czech Republic,0.023,Benin 907 | 2014,Czech Republic,3.725,Ethiopia 908 | 2014,Czech Republic,0.165,Ghana 909 | 2014,Czech Republic,0.285,Guinea 910 | 2014,Czech Republic,0.01,Guinea-Bissau 911 | 2014,Czech Republic,0.03,Côte d'Ivoire 912 | 2014,Czech Republic,0.053,Kenya 913 | 2014,Czech Republic,0.302,Liberia 914 | 2014,Czech Republic,0.009,Mali 915 | 2014,Czech Republic,0.298,Nigeria 916 | 2014,Czech Republic,0.102,Zimbabwe 917 | 2014,Czech Republic,0.085,Rwanda 918 | 2014,Czech Republic,0.028,Senegal 919 | 2014,Czech Republic,0.01,Eritrea 920 | 2014,Czech Republic,0.165,Sierra Leone 921 | 2014,Czech Republic,0.01,Somalia 922 | 2014,Czech Republic,0.032,Djibouti 923 | 2014,Czech Republic,0.108,Namibia 924 | 2014,Czech Republic,0.042,Sudan 925 | 2014,Czech Republic,0.289,South Sudan 926 | 2014,Czech Republic,0.02,Tanzania 927 | 2014,Czech Republic,0.01,Togo 928 | 2014,Czech Republic,0.009,Uganda 929 | 2014,Czech Republic,0.67,Zambia 930 | 2014,Slovakia,0.12,Tunisia 931 | 2014,Slovakia,0.01,Burundi 932 | 2014,Slovakia,0.02,Benin 933 | 2014,Slovakia,0.02,Ethiopia 934 | 2014,Slovakia,1.24,Kenya 935 | 2014,Slovakia,0.02,Lesotho 936 | 2014,Slovakia,0.05,Liberia 937 | 2014,Slovakia,0.01,Madagascar 938 | 2014,Slovakia,0.01,Rwanda 939 | 2014,Slovakia,0.01,Namibia 940 | 2014,Slovakia,0.02,Sudan 941 | 2014,Slovakia,0.39,South Sudan 942 | 2014,Slovakia,0.01,Tanzania 943 | 2014,Slovakia,0.01,Uganda 944 | 2014,Hungary,0.254,Algeria 945 | 2014,Hungary,0.036,Morocco 946 | 2014,Hungary,0.107,Tunisia 947 | 2014,Hungary,0.09,Egypt 948 | 2014,Hungary,0.053,Angola 949 | 2014,Hungary,0.032,Democratic Republic of the Congo 950 | 2014,Hungary,0.033,Ethiopia 951 | 2014,Hungary,0.01,Gambia 952 | 2014,Hungary,0.022,Kenya 953 | 2014,Hungary,0.19,Nigeria 954 | 2014,Hungary,0.007,Somalia 955 | 2014,Hungary,0.005,Namibia 956 | 2014,Hungary,0.01,Sudan 957 | 2014,Hungary,0.011,Tanzania 958 | 2014,Hungary,0.048,Uganda 959 | 2014,Poland,0.01,Libya 960 | 2014,Poland,0.34,Tunisia 961 | 2014,Poland,0.06,Egypt 962 | 2014,Poland,0.05,South Africa 963 | 2014,Poland,0.26,Angola 964 | 2014,Poland,0.02,Botswana 965 | 2014,Poland,0.15,Burundi 966 | 2014,Poland,0.02,Cameroon 967 | 2014,Poland,0.03,Congo 968 | 2014,Poland,0.01,Democratic Republic of the Congo 969 | 2014,Poland,0.25,Ethiopia 970 | 2014,Poland,0.04,Ghana 971 | 2014,Poland,1.12,Kenya 972 | 2014,Poland,0.03,Madagascar 973 | 2014,Poland,0.01,Mali 974 | 2014,Poland,0.06,Nigeria 975 | 2014,Poland,0.06,Rwanda 976 | 2014,Poland,0.16,Senegal 977 | 2014,Poland,0.12,Somalia 978 | 2014,Poland,0.02,Namibia 979 | 2014,Poland,0.01,Sudan 980 | 2014,Poland,0.21,Tanzania 981 | 2014,Poland,0.36,Uganda 982 | 2014,Poland,0.01,Burkina Faso 983 | 2014,Poland,0.07,Zambia 984 | 2014,Poland,14.63,Angola 985 | 2014,Poland,23.23,Ethiopia 986 | 2014,Romania,0.013,Algeria 987 | 2014,Romania,0.014,Libya 988 | 2014,Romania,0.131,Morocco 989 | 2014,Romania,0.019,Tunisia 990 | 2014,Romania,0.08,Egypt 991 | 2014,Romania,0.14,Angola 992 | 2014,Romania,0.003,Botswana 993 | 2014,Romania,0.014,Burundi 994 | 2014,Romania,0.015,Cameroon 995 | 2014,Romania,0.01,Congo 996 | 2014,Romania,0.001,Benin 997 | 2014,Romania,0.002,Ethiopia 998 | 2014,Romania,0.001,Gabon 999 | 2014,Romania,0.008,Ghana 1000 | 2014,Romania,0.001,Guinea 1001 | 2014,Romania,0.007,Côte d'Ivoire 1002 | 2014,Romania,0.018,Kenya 1003 | 2014,Romania,0.049,Mauritius 1004 | 2014,Romania,0.094,Nigeria 1005 | 2014,Romania,0.016,Zimbabwe 1006 | 2014,Romania,0.002,Rwanda 1007 | 2014,Romania,0.009,Senegal 1008 | 2014,Romania,0.004,Somalia 1009 | 2014,Romania,0.023,Sudan 1010 | 2014,Romania,0.008,Tanzania 1011 | 2014,Romania,0.002,Uganda 1012 | 2014,Estonia,0.003,Algeria 1013 | 2014,Estonia,0.119,Tunisia 1014 | 2014,Estonia,0.016,Egypt 1015 | 2014,Estonia,0.133,Central African Republic 1016 | 2014,Estonia,0.027,Ethiopia 1017 | 2014,Estonia,0.003,Ghana 1018 | 2014,Estonia,0.008,Guinea 1019 | 2014,Estonia,0.036,Senegal 1020 | 2014,Estonia,0.005,Eritrea 1021 | 2014,Estonia,0.05,Sierra Leone 1022 | 2014,Estonia,0.102,Sudan 1023 | 2014,Estonia,0.265,South Sudan 1024 | 2014,Estonia,0.046,Uganda 1025 | 2014,Lithuania,0.027,Central African Republic 1026 | 2014,Russia,1.5,Morocco 1027 | 2014,Russia,5.65,Tunisia 1028 | 2014,Russia,6.32,Cameroon 1029 | 2014,Russia,3.04,Ghana 1030 | 2014,Russia,16.79,Guinea 1031 | 2014,Russia,2,Kenya 1032 | 2014,Russia,2.07,Liberia 1033 | 2014,Russia,2,Mali 1034 | 2014,Russia,8,Mozambique 1035 | 2014,Russia,1.5,Sierra Leone 1036 | 2014,Russia,1,Somalia 1037 | 2014,Russia,0.05,Sudan 1038 | 2014,Russia,5.01,South Sudan 1039 | 2014,Russia,1.37,Tanzania 1040 | 2014,Russia,1.57,Uganda 1041 | 2014,Canada,0.147,Algeria 1042 | 2014,Canada,0.207,Libya 1043 | 2014,Canada,10.567,Morocco 1044 | 2014,Canada,1.065,Tunisia 1045 | 2014,Canada,8.102,Egypt 1046 | 2014,Canada,6.787,South Africa 1047 | 2014,Canada,0.287,Angola 1048 | 2014,Canada,1.065,Botswana 1049 | 2014,Canada,5.08,Burundi 1050 | 2014,Canada,2.527,Cameroon 1051 | 2014,Canada,0.067,Cabo Verde 1052 | 2014,Canada,16.174,Central African Republic 1053 | 2014,Canada,7.196,Chad 1054 | 2014,Canada,39.953,Democratic Republic of the Congo 1055 | 2014,Canada,5.432,Benin 1056 | 2014,Canada,108.169,Ethiopia 1057 | 2014,Canada,0.158,Gabon 1058 | 2014,Canada,0.215,Gambia 1059 | 2014,Canada,78.572,Ghana 1060 | 2014,Canada,12.45,Guinea 1061 | 2014,Canada,0.061,Guinea-Bissau 1062 | 2014,Canada,0.046,Equatorial Guinea 1063 | 2014,Canada,5.709,Côte d'Ivoire 1064 | 2014,Canada,46.033,Kenya 1065 | 2014,Canada,0.139,Lesotho 1066 | 2014,Canada,11.603,Liberia 1067 | 2014,Canada,4.413,Madagascar 1068 | 2014,Canada,13.353,Malawi 1069 | 2014,Canada,99.897,Mali 1070 | 2014,Canada,0.395,Mauritania 1071 | 2014,Canada,0.099,Mauritius 1072 | 2014,Canada,75.678,Mozambique 1073 | 2014,Canada,7.339,Niger 1074 | 2014,Canada,20.715,Nigeria 1075 | 2014,Canada,7.036,Zimbabwe 1076 | 2014,Canada,5.19,Rwanda 1077 | 2014,Canada,0.045,São Tomé and Principe 1078 | 2014,Canada,73.562,Senegal 1079 | 2014,Canada,0.936,Eritrea 1080 | 2014,Canada,9.916,Sierra Leone 1081 | 2014,Canada,30.407,Somalia 1082 | 2014,Canada,1.561,Djibouti 1083 | 2014,Canada,0.168,Namibia 1084 | 2014,Canada,14.463,Sudan 1085 | 2014,Canada,87.011,South Sudan 1086 | 2014,Canada,1.918,Swaziland 1087 | 2014,Canada,85.785,Tanzania 1088 | 2014,Canada,0.459,Togo 1089 | 2014,Canada,7.347,Uganda 1090 | 2014,Canada,37.554,Burkina Faso 1091 | 2014,Canada,7.843,Zambia 1092 | 2014,United States,0.43,Algeria 1093 | 2014,United States,20.74,Libya 1094 | 2014,United States,25.44,Morocco 1095 | 2014,United States,18.62,Tunisia 1096 | 2014,United States,87.3,Egypt 1097 | 2014,United States,516.08,South Africa 1098 | 2014,United States,60.84,Angola 1099 | 2014,United States,57.2,Botswana 1100 | 2014,United States,40.79,Burundi 1101 | 2014,United States,40.75,Cameroon 1102 | 2014,United States,7.46,Cabo Verde 1103 | 2014,United States,62.11,Central African Republic 1104 | 2014,United States,50.87,Chad 1105 | 2014,United States,0.34,Comoros 1106 | 2014,United States,1.68,Congo 1107 | 2014,United States,385.41,Democratic Republic of the Congo 1108 | 2014,United States,39.3,Benin 1109 | 2014,United States,666.72,Ethiopia 1110 | 2014,United States,6.94,Gabon 1111 | 2014,United States,2,Gambia 1112 | 2014,United States,143.32,Ghana 1113 | 2014,United States,41.86,Guinea 1114 | 2014,United States,2.75,Guinea-Bissau 1115 | 2014,United States,0.18,Equatorial Guinea 1116 | 2014,United States,112.91,Côte d'Ivoire 1117 | 2014,United States,810.63,Kenya 1118 | 2014,United States,39,Lesotho 1119 | 2014,United States,211.02,Liberia 1120 | 2014,United States,64.75,Madagascar 1121 | 2014,United States,200.91,Malawi 1122 | 2014,United States,166.58,Mali 1123 | 2014,United States,14.59,Mauritania 1124 | 2014,United States,0.15,Mauritius 1125 | 2014,United States,399.45,Mozambique 1126 | 2014,United States,80.49,Niger 1127 | 2014,United States,486.17,Nigeria 1128 | 2014,United States,178.21,Zimbabwe 1129 | 2014,United States,159.98,Rwanda 1130 | 2014,United States,0.75,São Tomé and Principe 1131 | 2014,United States,272.05,Senegal 1132 | 2014,United States,0.07,Seychelles 1133 | 2014,United States,0.15,Eritrea 1134 | 2014,United States,15.31,Sierra Leone 1135 | 2014,United States,203.64,Somalia 1136 | 2014,United States,8.15,Djibouti 1137 | 2014,United States,156.49,Namibia 1138 | 2014,United States,261.55,Sudan 1139 | 2014,United States,797.2,South Sudan 1140 | 2014,United States,44.03,Swaziland 1141 | 2014,United States,509.76,Tanzania 1142 | 2014,United States,3.27,Togo 1143 | 2014,United States,471.49,Uganda 1144 | 2014,United States,213.79,Burkina Faso 1145 | 2014,United States,326.83,Zambia 1146 | 2014,Israel,0.07,Morocco 1147 | 2014,Israel,0.28,South Africa 1148 | 2014,Israel,0.02,Angola 1149 | 2014,Israel,0.11,Botswana 1150 | 2014,Israel,0.01,Burundi 1151 | 2014,Israel,0.09,Cameroon 1152 | 2014,Israel,0.01,Central African Republic 1153 | 2014,Israel,0.01,Congo 1154 | 2014,Israel,0.01,Benin 1155 | 2014,Israel,0.35,Ethiopia 1156 | 2014,Israel,0.01,Gambia 1157 | 2014,Israel,0.61,Ghana 1158 | 2014,Israel,0.03,Côte d'Ivoire 1159 | 2014,Israel,0.59,Kenya 1160 | 2014,Israel,0.13,Liberia 1161 | 2014,Israel,0.11,Malawi 1162 | 2014,Israel,0.07,Nigeria 1163 | 2014,Israel,0.02,Rwanda 1164 | 2014,Israel,0.27,Senegal 1165 | 2014,Israel,0.01,Seychelles 1166 | 2014,Israel,0.14,Sierra Leone 1167 | 2014,Israel,0.01,Sudan 1168 | 2014,Israel,0.02,Tanzania 1169 | 2014,Israel,0.06,Togo 1170 | 2014,Israel,0.04,Uganda 1171 | 2014,Israel,0.16,Burkina Faso 1172 | 2014,Israel,0.01,Zambia 1173 | 2014,Kuwait,61.355,Morocco 1174 | 2014,Kuwait,0.182,Egypt 1175 | 2014,Kuwait,0.178,Gambia 1176 | 2014,Kuwait,0.593,Liberia 1177 | 2014,Kuwait,0.131,Mauritania 1178 | 2014,Kuwait,0.01,Niger 1179 | 2014,Kuwait,0.074,Sierra Leone 1180 | 2014,Kuwait,2.201,Somalia 1181 | 2014,Kuwait,0.021,Djibouti 1182 | 2014,Kuwait,3.5,Sudan 1183 | 2014,Kuwait,0,Swaziland 1184 | 2014,Kuwait,1.457,Burkina Faso 1185 | 2014,Kuwait,41.177,Morocco 1186 | 2014,Kuwait,19.727,Tunisia 1187 | 2014,Kuwait,45.431,Egypt 1188 | 2014,Kuwait,0.015,Cameroon 1189 | 2014,Kuwait,1.628,Cabo Verde 1190 | 2014,Kuwait,7.8,Benin 1191 | 2014,Kuwait,6.598,Ethiopia 1192 | 2014,Kuwait,0.897,Gabon 1193 | 2014,Kuwait,2.444,Gambia 1194 | 2014,Kuwait,1.418,Guinea 1195 | 2014,Kuwait,3.868,Côte d'Ivoire 1196 | 2014,Kuwait,1.667,Kenya 1197 | 2014,Kuwait,6.623,Lesotho 1198 | 2014,Kuwait,0.319,Madagascar 1199 | 2014,Kuwait,3.648,Malawi 1200 | 2014,Kuwait,6.118,Mali 1201 | 2014,Kuwait,21.398,Mauritania 1202 | 2014,Kuwait,2.148,Mozambique 1203 | 2014,Kuwait,4.552,Rwanda 1204 | 2014,Kuwait,8.097,Senegal 1205 | 2014,Kuwait,3.849,Sierra Leone 1206 | 2014,Kuwait,14.751,Djibouti 1207 | 2014,Kuwait,1.845,Swaziland 1208 | 2014,Kuwait,11.009,Tanzania 1209 | 2014,Kuwait,0.422,Togo 1210 | 2014,Kuwait,1.79,Uganda 1211 | 2014,Kuwait,3.069,Burkina Faso 1212 | 2014,United Arab Emirates,0.044,Algeria 1213 | 2014,United Arab Emirates,50.896,Libya 1214 | 2014,United Arab Emirates,472.194,Morocco 1215 | 2014,United Arab Emirates,27.342,Tunisia 1216 | 2014,United Arab Emirates,3134.49,Egypt 1217 | 2014,United Arab Emirates,0.559,South Africa 1218 | 2014,United Arab Emirates,0.1,Burundi 1219 | 2014,United Arab Emirates,0.219,Cameroon 1220 | 2014,United Arab Emirates,0.045,Central African Republic 1221 | 2014,United Arab Emirates,1.526,Chad 1222 | 2014,United Arab Emirates,2.166,Comoros 1223 | 2014,United Arab Emirates,0.365,Congo 1224 | 2014,United Arab Emirates,0.027,Democratic Republic of the Congo 1225 | 2014,United Arab Emirates,0.138,Benin 1226 | 2014,United Arab Emirates,2.417,Ethiopia 1227 | 2014,United Arab Emirates,0.13,Gambia 1228 | 2014,United Arab Emirates,1.397,Ghana 1229 | 2014,United Arab Emirates,3.11,Guinea 1230 | 2014,United Arab Emirates,0.695,Côte d'Ivoire 1231 | 2014,United Arab Emirates,2.3,Kenya 1232 | 2014,United Arab Emirates,1,Liberia 1233 | 2014,United Arab Emirates,0.085,Madagascar 1234 | 2014,United Arab Emirates,1.466,Malawi 1235 | 2014,United Arab Emirates,0.2,Mali 1236 | 2014,United Arab Emirates,1.008,Mauritania 1237 | 2014,United Arab Emirates,0.314,Mozambique 1238 | 2014,United Arab Emirates,0.531,Niger 1239 | 2014,United Arab Emirates,0.144,Nigeria 1240 | 2014,United Arab Emirates,0.012,Zimbabwe 1241 | 2014,United Arab Emirates,0.448,Rwanda 1242 | 2014,United Arab Emirates,0.785,Senegal 1243 | 2014,United Arab Emirates,2.855,Seychelles 1244 | 2014,United Arab Emirates,0.002,Eritrea 1245 | 2014,United Arab Emirates,1,Sierra Leone 1246 | 2014,United Arab Emirates,23.441,Somalia 1247 | 2014,United Arab Emirates,0.658,Djibouti 1248 | 2014,United Arab Emirates,0.571,Namibia 1249 | 2014,United Arab Emirates,5.589,Sudan 1250 | 2014,United Arab Emirates,0.993,South Sudan 1251 | 2014,United Arab Emirates,0.813,Tanzania 1252 | 2014,United Arab Emirates,0.24,Togo 1253 | 2014,United Arab Emirates,0.334,Uganda 1254 | 2014,United Arab Emirates,0.365,Burkina Faso 1255 | 2014,United Arab Emirates,0.012,Zambia 1256 | 2014,United Arab Emirates,11.18,Algeria 1257 | 2014,United Arab Emirates,19.679,Morocco 1258 | 2014,United Arab Emirates,1.84,Tunisia 1259 | 2014,United Arab Emirates,36.986,Egypt 1260 | 2014,United Arab Emirates,2.698,Benin 1261 | 2014,United Arab Emirates,0.841,Gambia 1262 | 2014,United Arab Emirates,8.432,Lesotho 1263 | 2014,United Arab Emirates,0.555,Malawi 1264 | 2014,United Arab Emirates,0.406,Mauritania 1265 | 2014,United Arab Emirates,0.033,Eritrea 1266 | 2014,United Arab Emirates,1.462,Sierra Leone 1267 | 2014,United Arab Emirates,0.351,Tanzania 1268 | 2014,United Arab Emirates,2.017,Burkina Faso 1269 | 2014,Kazakhstan,0.05,Central African Republic 1270 | 2014,Japan,2.75,Algeria 1271 | 2014,Japan,5.6,Libya 1272 | 2014,Japan,12.37,Morocco 1273 | 2014,Japan,13.23,Tunisia 1274 | 2014,Japan,33.35,Egypt 1275 | 2014,Japan,8.28,South Africa 1276 | 2014,Japan,8,Angola 1277 | 2014,Japan,4.55,Botswana 1278 | 2014,Japan,9.04,Burundi 1279 | 2014,Japan,14.62,Cameroon 1280 | 2014,Japan,0.62,Cabo Verde 1281 | 2014,Japan,9.29,Central African Republic 1282 | 2014,Japan,11.19,Chad 1283 | 2014,Japan,3.45,Comoros 1284 | 2014,Japan,6.39,Congo 1285 | 2014,Japan,53.8,Democratic Republic of the Congo 1286 | 2014,Japan,10.2,Benin 1287 | 2014,Japan,82.77,Ethiopia 1288 | 2014,Japan,4.98,Gabon 1289 | 2014,Japan,0.35,Gambia 1290 | 2014,Japan,41.25,Ghana 1291 | 2014,Japan,22.99,Guinea 1292 | 2014,Japan,8.03,Guinea-Bissau 1293 | 2014,Japan,26.59,Côte d'Ivoire 1294 | 2014,Japan,60.87,Kenya 1295 | 2014,Japan,2.29,Lesotho 1296 | 2014,Japan,30.26,Liberia 1297 | 2014,Japan,10.28,Madagascar 1298 | 2014,Japan,42.45,Malawi 1299 | 2014,Japan,24.29,Mali 1300 | 2014,Japan,22.46,Mauritania 1301 | 2014,Japan,3.34,Mauritius 1302 | 2014,Japan,51.17,Mozambique 1303 | 2014,Japan,32.05,Niger 1304 | 2014,Japan,35.15,Nigeria 1305 | 2014,Japan,5.18,Zimbabwe 1306 | 2014,Japan,22.61,Rwanda 1307 | 2014,Japan,2.46,São Tomé and Principe 1308 | 2014,Japan,45.06,Senegal 1309 | 2014,Japan,0.66,Seychelles 1310 | 2014,Japan,1.32,Eritrea 1311 | 2014,Japan,13.28,Sierra Leone 1312 | 2014,Japan,32.58,Somalia 1313 | 2014,Japan,26.46,Djibouti 1314 | 2014,Japan,5.31,Namibia 1315 | 2014,Japan,52.51,Sudan 1316 | 2014,Japan,43.28,South Sudan 1317 | 2014,Japan,0.5,Swaziland 1318 | 2014,Japan,60.27,Tanzania 1319 | 2014,Japan,10.17,Togo 1320 | 2014,Japan,48.74,Uganda 1321 | 2014,Japan,23.55,Burkina Faso 1322 | 2014,Japan,39.38,Zambia 1323 | 2014,Japan,68.35,Morocco 1324 | 2014,Japan,83.4,Tunisia 1325 | 2014,Japan,79.27,Egypt 1326 | 2014,Japan,0.18,Botswana 1327 | 2014,Japan,10.42,Cameroon 1328 | 2014,Japan,10.39,Cabo Verde 1329 | 2014,Japan,51.19,Kenya 1330 | 2014,Japan,0.27,Mauritius 1331 | 2014,Japan,34.11,Mozambique 1332 | 2014,Japan,53.72,Tanzania 1333 | 2014,Japan,36.99,Uganda 1334 | 2014,Japan,10.74,Zambia 1335 | 2014,Korea,3.842,Algeria 1336 | 2014,Korea,1.213,Libya 1337 | 2014,Korea,4.051,Morocco 1338 | 2014,Korea,4.705,Tunisia 1339 | 2014,Korea,3.638,Egypt 1340 | 2014,Korea,0.194,South Africa 1341 | 2014,Korea,0.873,Angola 1342 | 2014,Korea,0.121,Botswana 1343 | 2014,Korea,0.577,Burundi 1344 | 2014,Korea,6.717,Cameroon 1345 | 2014,Korea,0.022,Cabo Verde 1346 | 2014,Korea,1.011,Central African Republic 1347 | 2014,Korea,0.097,Chad 1348 | 2014,Korea,0.1,Comoros 1349 | 2014,Korea,0.022,Congo 1350 | 2014,Korea,11.518,Democratic Republic of the Congo 1351 | 2014,Korea,0.096,Benin 1352 | 2014,Korea,19.34,Ethiopia 1353 | 2014,Korea,0.298,Gabon 1354 | 2014,Korea,0.038,Gambia 1355 | 2014,Korea,12.483,Ghana 1356 | 2014,Korea,0.307,Guinea 1357 | 2014,Korea,0.151,Guinea-Bissau 1358 | 2014,Korea,0.03,Equatorial Guinea 1359 | 2014,Korea,2.555,Côte d'Ivoire 1360 | 2014,Korea,3.997,Kenya 1361 | 2014,Korea,0.231,Lesotho 1362 | 2014,Korea,0.066,Liberia 1363 | 2014,Korea,0.505,Madagascar 1364 | 2014,Korea,2.021,Malawi 1365 | 2014,Korea,0.678,Mali 1366 | 2014,Korea,0.02,Mauritius 1367 | 2014,Korea,4.245,Mozambique 1368 | 2014,Korea,0.502,Niger 1369 | 2014,Korea,3.04,Nigeria 1370 | 2014,Korea,4.243,Zimbabwe 1371 | 2014,Korea,16.457,Rwanda 1372 | 2014,Korea,11.635,Senegal 1373 | 2014,Korea,6.3,Sierra Leone 1374 | 2014,Korea,0.582,Somalia 1375 | 2014,Korea,0.017,Namibia 1376 | 2014,Korea,3.204,Sudan 1377 | 2014,Korea,2.064,South Sudan 1378 | 2014,Korea,0.12,Swaziland 1379 | 2014,Korea,12.895,Tanzania 1380 | 2014,Korea,0.328,Togo 1381 | 2014,Korea,11.364,Uganda 1382 | 2014,Korea,0.196,Burkina Faso 1383 | 2014,Korea,0.132,Zambia 1384 | 2014,Korea,5.017,Angola 1385 | 2014,Korea,4.642,Cameroon 1386 | 2014,Korea,23.569,Ethiopia 1387 | 2014,Korea,6.559,Ghana 1388 | 2014,Korea,0.083,Kenya 1389 | 2014,Korea,6.516,Mali 1390 | 2014,Korea,52.267,Mozambique 1391 | 2014,Korea,8.224,Senegal 1392 | 2014,Korea,1.207,Sierra Leone 1393 | 2014,Korea,66.943,Tanzania 1394 | 2014,Korea,1.096,Uganda 1395 | 2014,Thailand,0.02,Egypt 1396 | 2014,Thailand,0.01,Botswana 1397 | 2014,Thailand,0.01,Burundi 1398 | 2014,Thailand,0.04,Ethiopia 1399 | 2014,Thailand,0.09,Gambia 1400 | 2014,Thailand,0.01,Guinea 1401 | 2014,Thailand,0.08,Kenya 1402 | 2014,Thailand,0.01,Madagascar 1403 | 2014,Thailand,0.08,Malawi 1404 | 2014,Thailand,0.02,Mauritius 1405 | 2014,Thailand,0.22,Mozambique 1406 | 2014,Thailand,0.01,Nigeria 1407 | 2014,Thailand,0.04,Senegal 1408 | 2014,Thailand,0.03,Seychelles 1409 | 2014,Thailand,0.04,Eritrea 1410 | 2014,Thailand,0.02,Sudan 1411 | 2014,Thailand,0.01,Swaziland 1412 | 2014,Thailand,0.08,Tanzania 1413 | 2014,Thailand,0.05,Uganda 1414 | 2014,Thailand,0.01,Zambia 1415 | 2014,Timor Leste,0.5,Cabo Verde 1416 | 2014,Timor Leste,0.7,Guinea-Bissau 1417 | 2014,Australia,0.24,Algeria 1418 | 2014,Australia,0.35,Morocco 1419 | 2014,Australia,0.34,Tunisia 1420 | 2014,Australia,3.62,Egypt 1421 | 2014,Australia,2.44,South Africa 1422 | 2014,Australia,0.12,Angola 1423 | 2014,Australia,1.28,Botswana 1424 | 2014,Australia,0.96,Burundi 1425 | 2014,Australia,0.83,Cameroon 1426 | 2014,Australia,0.12,Cabo Verde 1427 | 2014,Australia,3.71,Central African Republic 1428 | 2014,Australia,0.05,Chad 1429 | 2014,Australia,0.1,Comoros 1430 | 2014,Australia,0.16,Congo 1431 | 2014,Australia,4.62,Democratic Republic of the Congo 1432 | 2014,Australia,0.05,Benin 1433 | 2014,Australia,9.94,Ethiopia 1434 | 2014,Australia,0.01,Gabon 1435 | 2014,Australia,0.42,Gambia 1436 | 2014,Australia,3.09,Ghana 1437 | 2014,Australia,0.07,Guinea 1438 | 2014,Australia,0.01,Equatorial Guinea 1439 | 2014,Australia,0.12,Côte d'Ivoire 1440 | 2014,Australia,8.67,Kenya 1441 | 2014,Australia,1.15,Lesotho 1442 | 2014,Australia,1.99,Liberia 1443 | 2014,Australia,0.2,Madagascar 1444 | 2014,Australia,5.62,Malawi 1445 | 2014,Australia,0.3,Mali 1446 | 2014,Australia,0.03,Mauritania 1447 | 2014,Australia,0.51,Mauritius 1448 | 2014,Australia,4.44,Mozambique 1449 | 2014,Australia,0.33,Niger 1450 | 2014,Australia,2.38,Nigeria 1451 | 2014,Australia,15.04,Zimbabwe 1452 | 2014,Australia,1.4,Rwanda 1453 | 2014,Australia,0.06,São Tomé and Principe 1454 | 2014,Australia,0.05,Senegal 1455 | 2014,Australia,0.74,Seychelles 1456 | 2014,Australia,1.61,Sierra Leone 1457 | 2014,Australia,13.07,Somalia 1458 | 2014,Australia,0.06,Djibouti 1459 | 2014,Australia,0.89,Namibia 1460 | 2014,Australia,1.96,Sudan 1461 | 2014,Australia,22.99,South Sudan 1462 | 2014,Australia,1.02,Swaziland 1463 | 2014,Australia,5.78,Tanzania 1464 | 2014,Australia,0.12,Togo 1465 | 2014,Australia,3.58,Uganda 1466 | 2014,Australia,0.11,Burkina Faso 1467 | 2014,Australia,3.3,Zambia 1468 | 2014,New Zealand,0.05,Morocco 1469 | 2014,New Zealand,0.28,South Africa 1470 | 2014,New Zealand,0.17,Botswana 1471 | 2014,New Zealand,0.03,Cameroon 1472 | 2014,New Zealand,0.41,Central African Republic 1473 | 2014,New Zealand,0.14,Comoros 1474 | 2014,New Zealand,0.21,Ethiopia 1475 | 2014,New Zealand,0.11,Ghana 1476 | 2014,New Zealand,0.05,Guinea-Bissau 1477 | 2014,New Zealand,1.03,Kenya 1478 | 2014,New Zealand,0.06,Malawi 1479 | 2014,New Zealand,0.03,Mauritius 1480 | 2014,New Zealand,0.11,Nigeria 1481 | 2014,New Zealand,0.4,Zimbabwe 1482 | 2014,New Zealand,0.2,Rwanda 1483 | 2014,New Zealand,0.05,Seychelles 1484 | 2014,New Zealand,1.7,Sierra Leone 1485 | 2014,New Zealand,0.07,Somalia 1486 | 2014,New Zealand,0.02,Namibia 1487 | 2014,New Zealand,0.58,South Sudan 1488 | 2014,New Zealand,0.05,Swaziland 1489 | 2014,New Zealand,0.83,Tanzania 1490 | 2014,New Zealand,0.03,Uganda 1491 | 2014,New Zealand,0.32,Zambia 1492 | 2015,Austria,0.119,Algeria 1493 | 2015,Austria,0.257,Libya 1494 | 2015,Austria,0.257,Morocco 1495 | 2015,Austria,0.507,Tunisia 1496 | 2015,Austria,3.541,Egypt 1497 | 2015,Austria,0.474,South Africa 1498 | 2015,Austria,0.01,Angola 1499 | 2015,Austria,0.02,Burundi 1500 | 2015,Austria,0.334,Cameroon 1501 | 2015,Austria,0.543,Cabo Verde 1502 | 2015,Austria,0.117,Central African Republic 1503 | 2015,Austria,0.084,Chad 1504 | 2015,Austria,0.018,Congo 1505 | 2015,Austria,0.377,Democratic Republic of the Congo 1506 | 2015,Austria,0.034,Benin 1507 | 2015,Austria,8.1,Ethiopia 1508 | 2015,Austria,0.373,Gabon 1509 | 2015,Austria,0.121,Gambia 1510 | 2015,Austria,1.458,Ghana 1511 | 2015,Austria,0.045,Guinea 1512 | 2015,Austria,0.02,Equatorial Guinea 1513 | 2015,Austria,0.035,Côte d'Ivoire 1514 | 2015,Austria,2.845,Kenya 1515 | 2015,Austria,0.055,Lesotho 1516 | 2015,Austria,0.056,Madagascar 1517 | 2015,Austria,0.059,Malawi 1518 | 2015,Austria,0.269,Mali 1519 | 2015,Austria,0.016,Mauritius 1520 | 2015,Austria,6.174,Mozambique 1521 | 2015,Austria,0.027,Niger 1522 | 2015,Austria,0.782,Nigeria 1523 | 2015,Austria,0.355,Zimbabwe 1524 | 2015,Austria,0.102,Rwanda 1525 | 2015,Austria,0.01,São Tomé and Principe 1526 | 2015,Austria,0.387,Senegal 1527 | 2015,Austria,0.192,Sierra Leone 1528 | 2015,Austria,0.172,Somalia 1529 | 2015,Austria,0.027,Namibia 1530 | 2015,Austria,0.153,Sudan 1531 | 2015,Austria,0.6,South Sudan 1532 | 2015,Austria,0.064,Swaziland 1533 | 2015,Austria,0.947,Tanzania 1534 | 2015,Austria,0.068,Togo 1535 | 2015,Austria,10.654,Uganda 1536 | 2015,Austria,4.452,Burkina Faso 1537 | 2015,Austria,0.032,Zambia 1538 | 2015,Belgium,3.001,Algeria 1539 | 2015,Belgium,0.078,Libya 1540 | 2015,Belgium,15.844,Morocco 1541 | 2015,Belgium,0.948,Tunisia 1542 | 2015,Belgium,0.506,Egypt 1543 | 2015,Belgium,13.323,South Africa 1544 | 2015,Belgium,49.135,Burundi 1545 | 2015,Belgium,3.403,Cameroon 1546 | 2015,Belgium,0.002,Cabo Verde 1547 | 2015,Belgium,7.254,Central African Republic 1548 | 2015,Belgium,0.333,Chad 1549 | 2015,Belgium,0.126,Comoros 1550 | 2015,Belgium,0.077,Congo 1551 | 2015,Belgium,89.448,Democratic Republic of the Congo 1552 | 2015,Belgium,19.643,Benin 1553 | 2015,Belgium,1.782,Ethiopia 1554 | 2015,Belgium,0.176,Gambia 1555 | 2015,Belgium,4.075,Ghana 1556 | 2015,Belgium,6.837,Guinea 1557 | 2015,Belgium,0.356,Guinea-Bissau 1558 | 2015,Belgium,0.4,Côte d'Ivoire 1559 | 2015,Belgium,5.379,Kenya 1560 | 2015,Belgium,1.479,Liberia 1561 | 2015,Belgium,2.083,Madagascar 1562 | 2015,Belgium,9.493,Malawi 1563 | 2015,Belgium,22.094,Mali 1564 | 2015,Belgium,0.651,Mauritania 1565 | 2015,Belgium,19.235,Mozambique 1566 | 2015,Belgium,17.126,Niger 1567 | 2015,Belgium,0.339,Nigeria 1568 | 2015,Belgium,2.193,Zimbabwe 1569 | 2015,Belgium,35.882,Rwanda 1570 | 2015,Belgium,17.024,Senegal 1571 | 2015,Belgium,0.007,Seychelles 1572 | 2015,Belgium,1.443,Sierra Leone 1573 | 2015,Belgium,0.293,Somalia 1574 | 2015,Belgium,0.084,Namibia 1575 | 2015,Belgium,0.008,Sudan 1576 | 2015,Belgium,4.36,South Sudan 1577 | 2015,Belgium,0.003,Swaziland 1578 | 2015,Belgium,12.428,Tanzania 1579 | 2015,Belgium,0.734,Togo 1580 | 2015,Belgium,16.795,Uganda 1581 | 2015,Belgium,10.653,Burkina Faso 1582 | 2015,Belgium,1.286,Zambia 1583 | 2015,Belgium,7.336,Kenya 1584 | 2015,Belgium,0.952,Senegal 1585 | 2015,Belgium,3.951,Sudan 1586 | 2015,Belgium,9.856,Togo 1587 | 2015,Denmark,0.031,Algeria 1588 | 2015,Denmark,0.164,Libya 1589 | 2015,Denmark,0.539,Morocco 1590 | 2015,Denmark,5.563,Tunisia 1591 | 2015,Denmark,1.35,Egypt 1592 | 2015,Denmark,2.299,South Africa 1593 | 2015,Denmark,1.487,Central African Republic 1594 | 2015,Denmark,0,Democratic Republic of the Congo 1595 | 2015,Denmark,6.084,Ethiopia 1596 | 2015,Denmark,38.172,Ghana 1597 | 2015,Denmark,51.757,Kenya 1598 | 2015,Denmark,0.591,Liberia 1599 | 2015,Denmark,26.409,Mali 1600 | 2015,Denmark,61.252,Mozambique 1601 | 2015,Denmark,12.815,Niger 1602 | 2015,Denmark,0.022,Nigeria 1603 | 2015,Denmark,26.786,Zimbabwe 1604 | 2015,Denmark,0.149,Sierra Leone 1605 | 2015,Denmark,15.016,Somalia 1606 | 2015,Denmark,4.446,Sudan 1607 | 2015,Denmark,15.928,South Sudan 1608 | 2015,Denmark,46.011,Tanzania 1609 | 2015,Denmark,29.59,Uganda 1610 | 2015,Denmark,41.572,Burkina Faso 1611 | 2015,Denmark,18.961,Zambia 1612 | 2015,Denmark,0.455,Egypt 1613 | 2015,Denmark,1.257,South Africa 1614 | 2015,Denmark,0.979,Ghana 1615 | 2015,Denmark,6.486,Kenya 1616 | 2015,Denmark,2.009,Mozambique 1617 | 2015,Denmark,0.668,Nigeria 1618 | 2015,France,97.6,Algeria 1619 | 2015,France,2.511,Libya 1620 | 2015,France,166.065,Morocco 1621 | 2015,France,71.361,Tunisia 1622 | 2015,France,27.868,Egypt 1623 | 2015,France,9.389,South Africa 1624 | 2015,France,4.981,Angola 1625 | 2015,France,0.595,Botswana 1626 | 2015,France,7.492,Burundi 1627 | 2015,France,42.263,Cameroon 1628 | 2015,France,1.426,Cabo Verde 1629 | 2015,France,37.993,Central African Republic 1630 | 2015,France,81.414,Chad 1631 | 2015,France,20.791,Comoros 1632 | 2015,France,54.754,Congo 1633 | 2015,France,63.815,Democratic Republic of the Congo 1634 | 2015,France,32.553,Benin 1635 | 2015,France,9.154,Ethiopia 1636 | 2015,France,22.422,Gabon 1637 | 2015,France,0.963,Gambia 1638 | 2015,France,3.918,Ghana 1639 | 2015,France,50.068,Guinea 1640 | 2015,France,0.539,Guinea-Bissau 1641 | 2015,France,3.372,Equatorial Guinea 1642 | 2015,France,278.76,Côte d'Ivoire 1643 | 2015,France,11.973,Kenya 1644 | 2015,France,0.158,Lesotho 1645 | 2015,France,1.025,Liberia 1646 | 2015,France,57.88,Madagascar 1647 | 2015,France,2.488,Malawi 1648 | 2015,France,139.634,Mali 1649 | 2015,France,18.768,Mauritania 1650 | 2015,France,12.78,Mauritius 1651 | 2015,France,8.655,Mozambique 1652 | 2015,France,47.947,Niger 1653 | 2015,France,7.484,Nigeria 1654 | 2015,France,1.815,Zimbabwe 1655 | 2015,France,4.565,Rwanda 1656 | 2015,France,0.616,São Tomé and Principe 1657 | 2015,France,92.795,Senegal 1658 | 2015,France,2.067,Seychelles 1659 | 2015,France,0.154,Eritrea 1660 | 2015,France,0.205,Sierra Leone 1661 | 2015,France,1.023,Somalia 1662 | 2015,France,32.201,Djibouti 1663 | 2015,France,0.609,Namibia 1664 | 2015,France,3.808,Sudan 1665 | 2015,France,0.842,South Sudan 1666 | 2015,France,0.097,Swaziland 1667 | 2015,France,2.516,Tanzania 1668 | 2015,France,30.304,Togo 1669 | 2015,France,1.698,Uganda 1670 | 2015,France,44.642,Burkina Faso 1671 | 2015,France,0.33,Zambia 1672 | 2015,France,206.993,Morocco 1673 | 2015,France,49.048,Tunisia 1674 | 2015,France,98.554,Egypt 1675 | 2015,France,192.865,South Africa 1676 | 2015,France,121.941,Cameroon 1677 | 2015,France,6.957,Cabo Verde 1678 | 2015,France,12.618,Ethiopia 1679 | 2015,France,63.74,Gabon 1680 | 2015,France,47.319,Ghana 1681 | 2015,France,90.642,Kenya 1682 | 2015,France,44.37,Madagascar 1683 | 2015,France,24.194,Mali 1684 | 2015,France,5.611,Mauritania 1685 | 2015,France,44.245,Mauritius 1686 | 2015,France,62.651,Mozambique 1687 | 2015,France,7.492,Niger 1688 | 2015,France,25.141,Nigeria 1689 | 2015,France,37.445,Senegal 1690 | 2015,France,25.261,Djibouti 1691 | 2015,France,25.569,Tanzania 1692 | 2015,France,1.442,Togo 1693 | 2015,France,8.874,Uganda 1694 | 2015,France,36.69,Burkina Faso 1695 | 2015,France,28.82,Zambia 1696 | 2015,Germany,6.965,Algeria 1697 | 2015,Germany,9.44,Libya 1698 | 2015,Germany,47.09,Morocco 1699 | 2015,Germany,55.037,Tunisia 1700 | 2015,Germany,76.199,Egypt 1701 | 2015,Germany,67.403,South Africa 1702 | 2015,Germany,2.228,Angola 1703 | 2015,Germany,0.106,Botswana 1704 | 2015,Germany,17.418,Burundi 1705 | 2015,Germany,73.167,Cameroon 1706 | 2015,Germany,0.286,Cabo Verde 1707 | 2015,Germany,37.671,Central African Republic 1708 | 2015,Germany,15.142,Chad 1709 | 2015,Germany,0.488,Congo 1710 | 2015,Germany,87.025,Democratic Republic of the Congo 1711 | 2015,Germany,38.38,Benin 1712 | 2015,Germany,49.122,Ethiopia 1713 | 2015,Germany,1.68,Gabon 1714 | 2015,Germany,0.256,Gambia 1715 | 2015,Germany,29.221,Ghana 1716 | 2015,Germany,12.762,Guinea 1717 | 2015,Germany,0.008,Guinea-Bissau 1718 | 2015,Germany,0.005,Equatorial Guinea 1719 | 2015,Germany,15.847,Côte d'Ivoire 1720 | 2015,Germany,66.604,Kenya 1721 | 2015,Germany,4.741,Lesotho 1722 | 2015,Germany,14.652,Liberia 1723 | 2015,Germany,19.976,Madagascar 1724 | 2015,Germany,41.38,Malawi 1725 | 2015,Germany,43.449,Mali 1726 | 2015,Germany,17.059,Mauritania 1727 | 2015,Germany,0.373,Mauritius 1728 | 2015,Germany,64.778,Mozambique 1729 | 2015,Germany,24.422,Niger 1730 | 2015,Germany,34.244,Nigeria 1731 | 2015,Germany,28.323,Zimbabwe 1732 | 2015,Germany,35.376,Rwanda 1733 | 2015,Germany,0.004,São Tomé and Principe 1734 | 2015,Germany,19.079,Senegal 1735 | 2015,Germany,0.023,Seychelles 1736 | 2015,Germany,0.603,Eritrea 1737 | 2015,Germany,25.28,Sierra Leone 1738 | 2015,Germany,29.146,Somalia 1739 | 2015,Germany,1.428,Djibouti 1740 | 2015,Germany,36.256,Namibia 1741 | 2015,Germany,16.825,Sudan 1742 | 2015,Germany,56.741,South Sudan 1743 | 2015,Germany,0.118,Swaziland 1744 | 2015,Germany,60.101,Tanzania 1745 | 2015,Germany,34.212,Togo 1746 | 2015,Germany,52.84,Uganda 1747 | 2015,Germany,47.39,Burkina Faso 1748 | 2015,Germany,31.994,Zambia 1749 | 2015,Germany,346,Morocco 1750 | 2015,Germany,55.796,Tunisia 1751 | 2015,Germany,153.12,Egypt 1752 | 2015,Germany,354.552,South Africa 1753 | 2015,Germany,29.093,Ghana 1754 | 2015,Germany,4.07,Kenya 1755 | 2015,Germany,14.204,Mozambique 1756 | 2015,Germany,27.732,Namibia 1757 | 2015,Germany,33.051,Tanzania 1758 | 2015,Italy,1.244,Algeria 1759 | 2015,Italy,1.705,Libya 1760 | 2015,Italy,10.092,Morocco 1761 | 2015,Italy,7.453,Tunisia 1762 | 2015,Italy,26.494,Egypt 1763 | 2015,Italy,0.933,South Africa 1764 | 2015,Italy,1.93,Angola 1765 | 2015,Italy,0.083,Botswana 1766 | 2015,Italy,1.365,Burundi 1767 | 2015,Italy,2.545,Cameroon 1768 | 2015,Italy,0.235,Cabo Verde 1769 | 2015,Italy,5.274,Central African Republic 1770 | 2015,Italy,0.792,Chad 1771 | 2015,Italy,0.017,Comoros 1772 | 2015,Italy,0.884,Congo 1773 | 2015,Italy,8.386,Democratic Republic of the Congo 1774 | 2015,Italy,2.369,Benin 1775 | 2015,Italy,30.493,Ethiopia 1776 | 2015,Italy,0.074,Gabon 1777 | 2015,Italy,0.004,Gambia 1778 | 2015,Italy,2.465,Ghana 1779 | 2015,Italy,0.122,Guinea 1780 | 2015,Italy,0.525,Guinea-Bissau 1781 | 2015,Italy,0.133,Equatorial Guinea 1782 | 2015,Italy,1.289,Côte d'Ivoire 1783 | 2015,Italy,20.86,Kenya 1784 | 2015,Italy,3.371,Madagascar 1785 | 2015,Italy,0.663,Malawi 1786 | 2015,Italy,4.124,Mali 1787 | 2015,Italy,2.068,Mauritania 1788 | 2015,Italy,19.558,Mozambique 1789 | 2015,Italy,2.658,Niger 1790 | 2015,Italy,0.718,Nigeria 1791 | 2015,Italy,0.571,Zimbabwe 1792 | 2015,Italy,2.644,Rwanda 1793 | 2015,Italy,0.29,São Tomé and Principe 1794 | 2015,Italy,14.38,Senegal 1795 | 2015,Italy,0.67,Eritrea 1796 | 2015,Italy,7.128,Sierra Leone 1797 | 2015,Italy,13.444,Somalia 1798 | 2015,Italy,4.263,Djibouti 1799 | 2015,Italy,0.016,Namibia 1800 | 2015,Italy,13.928,Sudan 1801 | 2015,Italy,12.758,South Sudan 1802 | 2015,Italy,0.024,Swaziland 1803 | 2015,Italy,4.814,Tanzania 1804 | 2015,Italy,2.1,Togo 1805 | 2015,Italy,3.462,Uganda 1806 | 2015,Italy,8.253,Burkina Faso 1807 | 2015,Italy,0.513,Zambia 1808 | 2015,Italy,22.015,Tunisia 1809 | 2015,Italy,4.437,Egypt 1810 | 2015,Italy,4.437,Ethiopia 1811 | 2015,Italy,0.053,Kenya 1812 | 2015,Italy,2.354,Senegal 1813 | 2015,Netherlands,0.014,Algeria 1814 | 2015,Netherlands,0.506,Libya 1815 | 2015,Netherlands,1.073,Morocco 1816 | 2015,Netherlands,0.317,Tunisia 1817 | 2015,Netherlands,0.778,Egypt 1818 | 2015,Netherlands,2.865,South Africa 1819 | 2015,Netherlands,0.005,Botswana 1820 | 2015,Netherlands,27.03,Burundi 1821 | 2015,Netherlands,11.862,Central African Republic 1822 | 2015,Netherlands,7.089,Democratic Republic of the Congo 1823 | 2015,Netherlands,17.753,Benin 1824 | 2015,Netherlands,80.48,Ethiopia 1825 | 2015,Netherlands,32.48,Ghana 1826 | 2015,Netherlands,19.193,Kenya 1827 | 2015,Netherlands,0.017,Liberia 1828 | 2015,Netherlands,37.466,Mali 1829 | 2015,Netherlands,35.083,Mozambique 1830 | 2015,Netherlands,7.44,Nigeria 1831 | 2015,Netherlands,1.553,Zimbabwe 1832 | 2015,Netherlands,40.83,Rwanda 1833 | 2015,Netherlands,0.026,Senegal 1834 | 2015,Netherlands,2.286,Somalia 1835 | 2015,Netherlands,3.589,Sudan 1836 | 2015,Netherlands,42.08,South Sudan 1837 | 2015,Netherlands,14.689,Uganda 1838 | 2015,Netherlands,0.01,Zambia 1839 | 2015,Norway,0.735,Algeria 1840 | 2015,Norway,0.029,Libya 1841 | 2015,Norway,0.382,Morocco 1842 | 2015,Norway,3.126,Tunisia 1843 | 2015,Norway,4.412,Egypt 1844 | 2015,Norway,9.83,South Africa 1845 | 2015,Norway,6.598,Angola 1846 | 2015,Norway,0.071,Botswana 1847 | 2015,Norway,5.469,Burundi 1848 | 2015,Norway,0.69,Cameroon 1849 | 2015,Norway,10.102,Central African Republic 1850 | 2015,Norway,0.744,Chad 1851 | 2015,Norway,0.24,Congo 1852 | 2015,Norway,24.427,Democratic Republic of the Congo 1853 | 2015,Norway,0.019,Benin 1854 | 2015,Norway,48.672,Ethiopia 1855 | 2015,Norway,0.065,Gabon 1856 | 2015,Norway,0.141,Gambia 1857 | 2015,Norway,4.1,Ghana 1858 | 2015,Norway,0.142,Guinea 1859 | 2015,Norway,0.165,Guinea-Bissau 1860 | 2015,Norway,1.078,Côte d'Ivoire 1861 | 2015,Norway,13.932,Kenya 1862 | 2015,Norway,0.726,Lesotho 1863 | 2015,Norway,36.084,Liberia 1864 | 2015,Norway,6.547,Madagascar 1865 | 2015,Norway,73.391,Malawi 1866 | 2015,Norway,17.272,Mali 1867 | 2015,Norway,0.766,Mauritania 1868 | 2015,Norway,32.79,Mozambique 1869 | 2015,Norway,11.196,Niger 1870 | 2015,Norway,17.684,Nigeria 1871 | 2015,Norway,16.577,Zimbabwe 1872 | 2015,Norway,2.197,Rwanda 1873 | 2015,Norway,0.333,Senegal 1874 | 2015,Norway,1.37,Eritrea 1875 | 2015,Norway,6.952,Sierra Leone 1876 | 2015,Norway,43.127,Somalia 1877 | 2015,Norway,0.254,Djibouti 1878 | 2015,Norway,1.412,Namibia 1879 | 2015,Norway,17.237,Sudan 1880 | 2015,Norway,62.243,South Sudan 1881 | 2015,Norway,0.626,Swaziland 1882 | 2015,Norway,48.46,Tanzania 1883 | 2015,Norway,0.644,Togo 1884 | 2015,Norway,46.545,Uganda 1885 | 2015,Norway,0.506,Burkina Faso 1886 | 2015,Norway,22.423,Zambia 1887 | 2015,Portugal,0.178,Algeria 1888 | 2015,Portugal,0.347,Morocco 1889 | 2015,Portugal,0.067,Tunisia 1890 | 2015,Portugal,0.111,Egypt 1891 | 2015,Portugal,1.259,South Africa 1892 | 2015,Portugal,4.952,Angola 1893 | 2015,Portugal,0.033,Botswana 1894 | 2015,Portugal,20.034,Cabo Verde 1895 | 2015,Portugal,0.065,Central African Republic 1896 | 2015,Portugal,0.025,Congo 1897 | 2015,Portugal,0.04,Democratic Republic of the Congo 1898 | 2015,Portugal,0.039,Ethiopia 1899 | 2015,Portugal,0.013,Gambia 1900 | 2015,Portugal,0.014,Ghana 1901 | 2015,Portugal,0.053,Guinea 1902 | 2015,Portugal,13.858,Guinea-Bissau 1903 | 2015,Portugal,0.071,Equatorial Guinea 1904 | 2015,Portugal,0.04,Côte d'Ivoire 1905 | 2015,Portugal,0.002,Liberia 1906 | 2015,Portugal,0.148,Mali 1907 | 2015,Portugal,0.004,Mauritania 1908 | 2015,Portugal,27.451,Mozambique 1909 | 2015,Portugal,0.002,Nigeria 1910 | 2015,Portugal,0.047,Zimbabwe 1911 | 2015,Portugal,0.215,Rwanda 1912 | 2015,Portugal,9.546,São Tomé and Principe 1913 | 2015,Portugal,0.295,Senegal 1914 | 2015,Portugal,0.016,Sierra Leone 1915 | 2015,Portugal,0.114,Somalia 1916 | 2015,Portugal,0.351,Namibia 1917 | 2015,Portugal,0.089,Swaziland 1918 | 2015,Portugal,0.008,Tanzania 1919 | 2015,Portugal,0.006,Togo 1920 | 2015,Portugal,0.002,Burkina Faso 1921 | 2015,Portugal,11.531,Morocco 1922 | 2015,Portugal,3.577,Angola 1923 | 2015,Portugal,31.932,Cabo Verde 1924 | 2015,Portugal,5.528,Mozambique 1925 | 2015,Portugal,15.616,São Tomé and Principe 1926 | 2015,Sweden,1.547,Algeria 1927 | 2015,Sweden,2.779,Libya 1928 | 2015,Sweden,0.313,Morocco 1929 | 2015,Sweden,3.641,Tunisia 1930 | 2015,Sweden,6.624,Egypt 1931 | 2015,Sweden,4.5,South Africa 1932 | 2015,Sweden,1.224,Angola 1933 | 2015,Sweden,0.3,Botswana 1934 | 2015,Sweden,0.275,Burundi 1935 | 2015,Sweden,1.674,Cameroon 1936 | 2015,Sweden,0.037,Cabo Verde 1937 | 2015,Sweden,9.448,Central African Republic 1938 | 2015,Sweden,7.071,Chad 1939 | 2015,Sweden,53.557,Democratic Republic of the Congo 1940 | 2015,Sweden,0.653,Benin 1941 | 2015,Sweden,35.138,Ethiopia 1942 | 2015,Sweden,0.701,Gambia 1943 | 2015,Sweden,0.852,Ghana 1944 | 2015,Sweden,1.007,Guinea 1945 | 2015,Sweden,0.109,Guinea-Bissau 1946 | 2015,Sweden,0.809,Côte d'Ivoire 1947 | 2015,Sweden,64.686,Kenya 1948 | 2015,Sweden,0.1,Lesotho 1949 | 2015,Sweden,27.588,Liberia 1950 | 2015,Sweden,1.135,Madagascar 1951 | 2015,Sweden,3.069,Malawi 1952 | 2015,Sweden,32.371,Mali 1953 | 2015,Sweden,0.691,Mauritania 1954 | 2015,Sweden,0.011,Mauritius 1955 | 2015,Sweden,94.604,Mozambique 1956 | 2015,Sweden,5.714,Niger 1957 | 2015,Sweden,5.27,Nigeria 1958 | 2015,Sweden,32.208,Zimbabwe 1959 | 2015,Sweden,32.785,Rwanda 1960 | 2015,Sweden,0.799,Senegal 1961 | 2015,Sweden,0.026,Eritrea 1962 | 2015,Sweden,2.213,Sierra Leone 1963 | 2015,Sweden,61.169,Somalia 1964 | 2015,Sweden,0.8,Djibouti 1965 | 2015,Sweden,1.102,Namibia 1966 | 2015,Sweden,23.025,Sudan 1967 | 2015,Sweden,39.575,South Sudan 1968 | 2015,Sweden,0.25,Swaziland 1969 | 2015,Sweden,109.244,Tanzania 1970 | 2015,Sweden,1.28,Togo 1971 | 2015,Sweden,41.779,Uganda 1972 | 2015,Sweden,12.701,Burkina Faso 1973 | 2015,Sweden,51.224,Zambia 1974 | 2015,Switzerland,3.874,Algeria 1975 | 2015,Switzerland,5.468,Libya 1976 | 2015,Switzerland,9.687,Morocco 1977 | 2015,Switzerland,26.866,Tunisia 1978 | 2015,Switzerland,19.778,Egypt 1979 | 2015,Switzerland,15.296,South Africa 1980 | 2015,Switzerland,0.252,Angola 1981 | 2015,Switzerland,7.206,Burundi 1982 | 2015,Switzerland,4.061,Cameroon 1983 | 2015,Switzerland,1.395,Cabo Verde 1984 | 2015,Switzerland,10.355,Central African Republic 1985 | 2015,Switzerland,26.821,Chad 1986 | 2015,Switzerland,0.302,Congo 1987 | 2015,Switzerland,21.512,Democratic Republic of the Congo 1988 | 2015,Switzerland,26.007,Benin 1989 | 2015,Switzerland,19.783,Ethiopia 1990 | 2015,Switzerland,0.009,Gabon 1991 | 2015,Switzerland,0.021,Gambia 1992 | 2015,Switzerland,18.511,Ghana 1993 | 2015,Switzerland,2.725,Guinea 1994 | 2015,Switzerland,0.416,Guinea-Bissau 1995 | 2015,Switzerland,2.503,Côte d'Ivoire 1996 | 2015,Switzerland,11.861,Kenya 1997 | 2015,Switzerland,0.473,Lesotho 1998 | 2015,Switzerland,5.531,Liberia 1999 | 2015,Switzerland,8.135,Madagascar 2000 | 2015,Switzerland,0.489,Malawi 2001 | 2015,Switzerland,36.164,Mali 2002 | 2015,Switzerland,0.682,Mauritania 2003 | 2015,Switzerland,41.126,Mozambique 2004 | 2015,Switzerland,31.175,Niger 2005 | 2015,Switzerland,7.673,Nigeria 2006 | 2015,Switzerland,11.717,Zimbabwe 2007 | 2015,Switzerland,4.787,Rwanda 2008 | 2015,Switzerland,3.22,Senegal 2009 | 2015,Switzerland,0.763,Eritrea 2010 | 2015,Switzerland,0.081,Sierra Leone 2011 | 2015,Switzerland,22.963,Somalia 2012 | 2015,Switzerland,0.139,Djibouti 2013 | 2015,Switzerland,0.442,Namibia 2014 | 2015,Switzerland,15.369,Sudan 2015 | 2015,Switzerland,31.996,South Sudan 2016 | 2015,Switzerland,0.549,Swaziland 2017 | 2015,Switzerland,32.56,Tanzania 2018 | 2015,Switzerland,2.095,Togo 2019 | 2015,Switzerland,2.403,Uganda 2020 | 2015,Switzerland,38.777,Burkina Faso 2021 | 2015,Switzerland,0.466,Zambia 2022 | 2015,United Kingdom,4.088,Algeria 2023 | 2015,United Kingdom,16.054,Libya 2024 | 2015,United Kingdom,5.462,Morocco 2025 | 2015,United Kingdom,9.642,Tunisia 2026 | 2015,United Kingdom,18.659,Egypt 2027 | 2015,United Kingdom,30.371,South Africa 2028 | 2015,United Kingdom,1.981,Angola 2029 | 2015,United Kingdom,1.614,Botswana 2030 | 2015,United Kingdom,0.313,Burundi 2031 | 2015,United Kingdom,9.508,Cameroon 2032 | 2015,United Kingdom,0.178,Cabo Verde 2033 | 2015,United Kingdom,27.937,Central African Republic 2034 | 2015,United Kingdom,0.007,Comoros 2035 | 2015,United Kingdom,218.568,Democratic Republic of the Congo 2036 | 2015,United Kingdom,518.167,Ethiopia 2037 | 2015,United Kingdom,14.58,Gambia 2038 | 2015,United Kingdom,96.834,Ghana 2039 | 2015,United Kingdom,0.483,Guinea 2040 | 2015,United Kingdom,0.027,Guinea-Bissau 2041 | 2015,United Kingdom,1.067,Côte d'Ivoire 2042 | 2015,United Kingdom,238.481,Kenya 2043 | 2015,United Kingdom,0.656,Lesotho 2044 | 2015,United Kingdom,16.305,Liberia 2045 | 2015,United Kingdom,2.043,Madagascar 2046 | 2015,United Kingdom,136.119,Malawi 2047 | 2015,United Kingdom,2.858,Mali 2048 | 2015,United Kingdom,0.181,Mauritania 2049 | 2015,United Kingdom,1.191,Mauritius 2050 | 2015,United Kingdom,77.195,Mozambique 2051 | 2015,United Kingdom,401.835,Nigeria 2052 | 2015,United Kingdom,142.362,Zimbabwe 2053 | 2015,United Kingdom,154.791,Rwanda 2054 | 2015,United Kingdom,1.666,Senegal 2055 | 2015,United Kingdom,0.494,Seychelles 2056 | 2015,United Kingdom,0.464,Eritrea 2057 | 2015,United Kingdom,340.03,Sierra Leone 2058 | 2015,United Kingdom,186.14,Somalia 2059 | 2015,United Kingdom,0.029,Djibouti 2060 | 2015,United Kingdom,0.454,Namibia 2061 | 2015,United Kingdom,93.673,Saint Helena 2062 | 2015,United Kingdom,83.614,Sudan 2063 | 2015,United Kingdom,318.13,South Sudan 2064 | 2015,United Kingdom,0.258,Swaziland 2065 | 2015,United Kingdom,313.028,Tanzania 2066 | 2015,United Kingdom,0.052,Togo 2067 | 2015,United Kingdom,188.969,Uganda 2068 | 2015,United Kingdom,0.135,Burkina Faso 2069 | 2015,United Kingdom,81.433,Zambia 2070 | 2015,Finland,0.147,Algeria 2071 | 2015,Finland,0.771,Libya 2072 | 2015,Finland,0.302,Morocco 2073 | 2015,Finland,0.652,Tunisia 2074 | 2015,Finland,1.952,Egypt 2075 | 2015,Finland,2.081,South Africa 2076 | 2015,Finland,0.526,Angola 2077 | 2015,Finland,0.412,Botswana 2078 | 2015,Finland,0.764,Burundi 2079 | 2015,Finland,0.609,Cameroon 2080 | 2015,Finland,2.596,Central African Republic 2081 | 2015,Finland,2.108,Chad 2082 | 2015,Finland,0.005,Comoros 2083 | 2015,Finland,0.022,Congo 2084 | 2015,Finland,3.757,Democratic Republic of the Congo 2085 | 2015,Finland,0.066,Benin 2086 | 2015,Finland,23.967,Ethiopia 2087 | 2015,Finland,0.454,Gambia 2088 | 2015,Finland,1.468,Ghana 2089 | 2015,Finland,0.031,Guinea 2090 | 2015,Finland,0.468,Côte d'Ivoire 2091 | 2015,Finland,21.204,Kenya 2092 | 2015,Finland,0.551,Liberia 2093 | 2015,Finland,0.233,Madagascar 2094 | 2015,Finland,1.644,Malawi 2095 | 2015,Finland,0.842,Mali 2096 | 2015,Finland,0.226,Mauritania 2097 | 2015,Finland,0.682,Mauritius 2098 | 2015,Finland,26.333,Mozambique 2099 | 2015,Finland,0.026,Niger 2100 | 2015,Finland,0.223,Nigeria 2101 | 2015,Finland,0.408,Zimbabwe 2102 | 2015,Finland,0.07,Rwanda 2103 | 2015,Finland,0.875,Senegal 2104 | 2015,Finland,2.655,Eritrea 2105 | 2015,Finland,0.841,Sierra Leone 2106 | 2015,Finland,17.752,Somalia 2107 | 2015,Finland,0.008,Djibouti 2108 | 2015,Finland,4.274,Namibia 2109 | 2015,Finland,4.498,Sudan 2110 | 2015,Finland,8.424,South Sudan 2111 | 2015,Finland,0.492,Swaziland 2112 | 2015,Finland,29.039,Tanzania 2113 | 2015,Finland,0.313,Togo 2114 | 2015,Finland,6.122,Uganda 2115 | 2015,Finland,0.525,Burkina Faso 2116 | 2015,Finland,15.892,Zambia 2117 | 2015,Finland,4.946,South Africa 2118 | 2015,Finland,0.781,Ethiopia 2119 | 2015,Finland,9.879,Kenya 2120 | 2015,Finland,0.8,Mauritius 2121 | 2015,Iceland,0.06,South Africa 2122 | 2015,Iceland,0.42,Ethiopia 2123 | 2015,Iceland,0.03,Gambia 2124 | 2015,Iceland,0.12,Guinea-Bissau 2125 | 2015,Iceland,4.59,Malawi 2126 | 2015,Iceland,3.22,Mozambique 2127 | 2015,Iceland,0.13,Somalia 2128 | 2015,Iceland,0.01,Togo 2129 | 2015,Iceland,3.38,Uganda 2130 | 2015,Ireland,1.22,Libya 2131 | 2015,Ireland,0.09,Egypt 2132 | 2015,Ireland,6.32,South Africa 2133 | 2015,Ireland,0.68,Angola 2134 | 2015,Ireland,0.08,Botswana 2135 | 2015,Ireland,1.55,Burundi 2136 | 2015,Ireland,0.55,Cameroon 2137 | 2015,Ireland,5.41,Central African Republic 2138 | 2015,Ireland,1.2,Chad 2139 | 2015,Ireland,0.11,Comoros 2140 | 2015,Ireland,1.92,Congo 2141 | 2015,Ireland,5.46,Democratic Republic of the Congo 2142 | 2015,Ireland,0.03,Benin 2143 | 2015,Ireland,38.78,Ethiopia 2144 | 2015,Ireland,0.18,Gambia 2145 | 2015,Ireland,0.43,Ghana 2146 | 2015,Ireland,0.38,Guinea 2147 | 2015,Ireland,0.27,Guinea-Bissau 2148 | 2015,Ireland,0.01,Côte d'Ivoire 2149 | 2015,Ireland,7.95,Kenya 2150 | 2015,Ireland,0.46,Lesotho 2151 | 2015,Ireland,7.66,Liberia 2152 | 2015,Ireland,21.94,Malawi 2153 | 2015,Ireland,1.37,Mali 2154 | 2015,Ireland,0.26,Mauritania 2155 | 2015,Ireland,40.92,Mozambique 2156 | 2015,Ireland,2.16,Niger 2157 | 2015,Ireland,1.3,Nigeria 2158 | 2015,Ireland,7.23,Zimbabwe 2159 | 2015,Ireland,2.37,Rwanda 2160 | 2015,Ireland,0.24,Senegal 2161 | 2015,Ireland,0.77,Eritrea 2162 | 2015,Ireland,11.45,Sierra Leone 2163 | 2015,Ireland,7.15,Somalia 2164 | 2015,Ireland,0.11,Djibouti 2165 | 2015,Ireland,5.78,Sudan 2166 | 2015,Ireland,12.21,South Sudan 2167 | 2015,Ireland,0.18,Swaziland 2168 | 2015,Ireland,31.59,Tanzania 2169 | 2015,Ireland,25.45,Uganda 2170 | 2015,Ireland,0.24,Burkina Faso 2171 | 2015,Ireland,19.29,Zambia 2172 | 2015,Luxembourg,0.195,Morocco 2173 | 2015,Luxembourg,0.53,Tunisia 2174 | 2015,Luxembourg,0.142,Egypt 2175 | 2015,Luxembourg,0.355,South Africa 2176 | 2015,Luxembourg,0.848,Burundi 2177 | 2015,Luxembourg,0.33,Cameroon 2178 | 2015,Luxembourg,15.18,Cabo Verde 2179 | 2015,Luxembourg,3.194,Central African Republic 2180 | 2015,Luxembourg,0.114,Chad 2181 | 2015,Luxembourg,3.186,Democratic Republic of the Congo 2182 | 2015,Luxembourg,1.042,Benin 2183 | 2015,Luxembourg,0.594,Ethiopia 2184 | 2015,Luxembourg,0.072,Gambia 2185 | 2015,Luxembourg,0.146,Ghana 2186 | 2015,Luxembourg,0.717,Guinea 2187 | 2015,Luxembourg,0.064,Côte d'Ivoire 2188 | 2015,Luxembourg,0.574,Kenya 2189 | 2015,Luxembourg,0.222,Lesotho 2190 | 2015,Luxembourg,0.282,Madagascar 2191 | 2015,Luxembourg,0.514,Malawi 2192 | 2015,Luxembourg,14.104,Mali 2193 | 2015,Luxembourg,0.111,Mauritania 2194 | 2015,Luxembourg,23.636,Niger 2195 | 2015,Luxembourg,0.832,Nigeria 2196 | 2015,Luxembourg,0.111,Zimbabwe 2197 | 2015,Luxembourg,0.39,Rwanda 2198 | 2015,Luxembourg,0.004,São Tomé and Principe 2199 | 2015,Luxembourg,20.249,Senegal 2200 | 2015,Luxembourg,0.011,Sierra Leone 2201 | 2015,Luxembourg,0.277,Somalia 2202 | 2015,Luxembourg,0.115,Namibia 2203 | 2015,Luxembourg,0.556,Sudan 2204 | 2015,Luxembourg,3.449,South Sudan 2205 | 2015,Luxembourg,0.222,Swaziland 2206 | 2015,Luxembourg,0.175,Tanzania 2207 | 2015,Luxembourg,1.102,Togo 2208 | 2015,Luxembourg,0.079,Uganda 2209 | 2015,Luxembourg,21.504,Burkina Faso 2210 | 2015,Cyprus,0.006,Madagascar 2211 | 2015,Cyprus,0.006,Malawi 2212 | 2015,Greece,0.137,Algeria 2213 | 2015,Greece,0.038,Libya 2214 | 2015,Greece,0.069,Morocco 2215 | 2015,Greece,0.215,Tunisia 2216 | 2015,Greece,0.487,Egypt 2217 | 2015,Greece,0.061,South Africa 2218 | 2015,Greece,0.005,Burundi 2219 | 2015,Greece,0.095,Cameroon 2220 | 2015,Greece,0.005,Cabo Verde 2221 | 2015,Greece,0.006,Central African Republic 2222 | 2015,Greece,0.006,Chad 2223 | 2015,Greece,0.231,Congo 2224 | 2015,Greece,0.596,Democratic Republic of the Congo 2225 | 2015,Greece,0.067,Ethiopia 2226 | 2015,Greece,0.005,Gambia 2227 | 2015,Greece,0.006,Côte d'Ivoire 2228 | 2015,Greece,0.034,Kenya 2229 | 2015,Greece,0.023,Nigeria 2230 | 2015,Greece,0.024,Zimbabwe 2231 | 2015,Greece,0.008,São Tomé and Principe 2232 | 2015,Greece,0.006,Senegal 2233 | 2015,Greece,0.008,Sierra Leone 2234 | 2015,Greece,0.006,Somalia 2235 | 2015,Greece,0.003,Djibouti 2236 | 2015,Greece,0.042,Sudan 2237 | 2015,Greece,0.011,Togo 2238 | 2015,Greece,0.037,Uganda 2239 | 2015,Greece,0.006,Burkina Faso 2240 | 2015,Greece,0.002,Zambia 2241 | 2015,Malta,0.008,Morocco 2242 | 2015,Malta,0.013,Egypt 2243 | 2015,Malta,0.037,Ethiopia 2244 | 2015,Malta,0.056,Kenya 2245 | 2015,Malta,0.003,Madagascar 2246 | 2015,Malta,0.017,Malawi 2247 | 2015,Malta,0.028,Somalia 2248 | 2015,Malta,0.05,South Sudan 2249 | 2015,Malta,0.047,Tanzania 2250 | 2015,Malta,0.036,Uganda 2251 | 2015,Spain,2.048,Algeria 2252 | 2015,Spain,0.256,Libya 2253 | 2015,Spain,25.381,Morocco 2254 | 2015,Spain,0.743,Tunisia 2255 | 2015,Spain,0.868,Egypt 2256 | 2015,Spain,0.051,South Africa 2257 | 2015,Spain,0.099,Angola 2258 | 2015,Spain,0,Botswana 2259 | 2015,Spain,0.373,Burundi 2260 | 2015,Spain,0.757,Cameroon 2261 | 2015,Spain,0.411,Cabo Verde 2262 | 2015,Spain,1.819,Central African Republic 2263 | 2015,Spain,0.321,Chad 2264 | 2015,Spain,0.123,Congo 2265 | 2015,Spain,4.325,Democratic Republic of the Congo 2266 | 2015,Spain,0.209,Benin 2267 | 2015,Spain,6.954,Ethiopia 2268 | 2015,Spain,0.019,Gabon 2269 | 2015,Spain,0.207,Gambia 2270 | 2015,Spain,0.111,Ghana 2271 | 2015,Spain,1.215,Guinea 2272 | 2015,Spain,1.565,Guinea-Bissau 2273 | 2015,Spain,2.194,Equatorial Guinea 2274 | 2015,Spain,0.449,Côte d'Ivoire 2275 | 2015,Spain,0.369,Kenya 2276 | 2015,Spain,0.734,Liberia 2277 | 2015,Spain,0.037,Madagascar 2278 | 2015,Spain,0.102,Malawi 2279 | 2015,Spain,9.587,Mali 2280 | 2015,Spain,15.922,Mauritania 2281 | 2015,Spain,0.001,Mauritius 2282 | 2015,Spain,11.817,Mozambique 2283 | 2015,Spain,7.445,Niger 2284 | 2015,Spain,0.327,Nigeria 2285 | 2015,Spain,0.251,Zimbabwe 2286 | 2015,Spain,0.568,Rwanda 2287 | 2015,Spain,12.051,Senegal 2288 | 2015,Spain,0.12,Eritrea 2289 | 2015,Spain,1.323,Sierra Leone 2290 | 2015,Spain,0.778,Somalia 2291 | 2015,Spain,0.016,Namibia 2292 | 2015,Spain,0.121,Sudan 2293 | 2015,Spain,0.801,South Sudan 2294 | 2015,Spain,0.431,Tanzania 2295 | 2015,Spain,0.255,Togo 2296 | 2015,Spain,0.178,Uganda 2297 | 2015,Spain,0.798,Burkina Faso 2298 | 2015,Spain,0.002,Zambia 2299 | 2015,Spain,1.132,Morocco 2300 | 2015,Spain,2.451,Tunisia 2301 | 2015,Spain,0.28,Cabo Verde 2302 | 2015,Spain,1.021,Ghana 2303 | 2015,Spain,0.203,Mauritania 2304 | 2015,Spain,0.952,Senegal 2305 | 2015,Turkey,1.59,Algeria 2306 | 2015,Turkey,0.94,Libya 2307 | 2015,Turkey,0.64,Morocco 2308 | 2015,Turkey,1.35,Tunisia 2309 | 2015,Turkey,0.08,Egypt 2310 | 2015,Turkey,0.4,South Africa 2311 | 2015,Turkey,0.08,Angola 2312 | 2015,Turkey,0.04,Botswana 2313 | 2015,Turkey,0.04,Burundi 2314 | 2015,Turkey,0.3,Cameroon 2315 | 2015,Turkey,0.43,Central African Republic 2316 | 2015,Turkey,0.48,Chad 2317 | 2015,Turkey,0.98,Comoros 2318 | 2015,Turkey,0.14,Congo 2319 | 2015,Turkey,0.17,Democratic Republic of the Congo 2320 | 2015,Turkey,0.3,Benin 2321 | 2015,Turkey,0.71,Ethiopia 2322 | 2015,Turkey,0.07,Gabon 2323 | 2015,Turkey,12.67,Gambia 2324 | 2015,Turkey,0.28,Ghana 2325 | 2015,Turkey,0.54,Guinea 2326 | 2015,Turkey,0.23,Guinea-Bissau 2327 | 2015,Turkey,0.18,Côte d'Ivoire 2328 | 2015,Turkey,0.19,Kenya 2329 | 2015,Turkey,0.02,Lesotho 2330 | 2015,Turkey,1.27,Liberia 2331 | 2015,Turkey,0.05,Madagascar 2332 | 2015,Turkey,0.71,Mali 2333 | 2015,Turkey,12.7,Mauritania 2334 | 2015,Turkey,0.04,Mozambique 2335 | 2015,Turkey,8.9,Niger 2336 | 2015,Turkey,0.06,Nigeria 2337 | 2015,Turkey,7.54,Senegal 2338 | 2015,Turkey,0.21,Seychelles 2339 | 2015,Turkey,0.6,Sierra Leone 2340 | 2015,Turkey,314.82,Somalia 2341 | 2015,Turkey,3.94,Djibouti 2342 | 2015,Turkey,0.65,Namibia 2343 | 2015,Turkey,21.96,Sudan 2344 | 2015,Turkey,0.72,South Sudan 2345 | 2015,Turkey,0.02,Swaziland 2346 | 2015,Turkey,0.35,Tanzania 2347 | 2015,Turkey,0.09,Togo 2348 | 2015,Turkey,0.31,Uganda 2349 | 2015,Turkey,0.91,Burkina Faso 2350 | 2015,Turkey,0.07,Zambia 2351 | 2015,Slovenia,0.026,Morocco 2352 | 2015,Slovenia,0.053,Egypt 2353 | 2015,Slovenia,0.073,Burundi 2354 | 2015,Slovenia,0.008,Cabo Verde 2355 | 2015,Slovenia,0.067,Kenya 2356 | 2015,Slovenia,0.033,Mali 2357 | 2015,Slovenia,0.027,Rwanda 2358 | 2015,Slovenia,0.033,South Sudan 2359 | 2015,Slovenia,0.027,Uganda 2360 | 2015,Czech Republic,0.016,Morocco 2361 | 2015,Czech Republic,0.055,Tunisia 2362 | 2015,Czech Republic,0.075,Egypt 2363 | 2015,Czech Republic,0.024,South Africa 2364 | 2015,Czech Republic,0.006,Angola 2365 | 2015,Czech Republic,0.017,Cabo Verde 2366 | 2015,Czech Republic,0.098,Central African Republic 2367 | 2015,Czech Republic,0.003,Democratic Republic of the Congo 2368 | 2015,Czech Republic,0.012,Benin 2369 | 2015,Czech Republic,3.231,Ethiopia 2370 | 2015,Czech Republic,0.038,Gabon 2371 | 2015,Czech Republic,0.04,Gambia 2372 | 2015,Czech Republic,0.015,Ghana 2373 | 2015,Czech Republic,0.096,Kenya 2374 | 2015,Czech Republic,0.067,Malawi 2375 | 2015,Czech Republic,0.068,Mozambique 2376 | 2015,Czech Republic,0.081,Niger 2377 | 2015,Czech Republic,0.019,Nigeria 2378 | 2015,Czech Republic,0.075,Zimbabwe 2379 | 2015,Czech Republic,0.036,Rwanda 2380 | 2015,Czech Republic,0.04,Senegal 2381 | 2015,Czech Republic,0.02,Djibouti 2382 | 2015,Czech Republic,0.053,Namibia 2383 | 2015,Czech Republic,0.011,Sudan 2384 | 2015,Czech Republic,0.215,South Sudan 2385 | 2015,Czech Republic,0.008,Tanzania 2386 | 2015,Czech Republic,0.081,Uganda 2387 | 2015,Czech Republic,0.598,Zambia 2388 | 2015,Slovakia,0.01,Benin 2389 | 2015,Slovakia,0.01,Ethiopia 2390 | 2015,Slovakia,1.32,Kenya 2391 | 2015,Slovakia,0.02,Lesotho 2392 | 2015,Slovakia,0.03,Rwanda 2393 | 2015,Slovakia,0.01,Sudan 2394 | 2015,Slovakia,0.17,South Sudan 2395 | 2015,Slovakia,0.02,Uganda 2396 | 2015,Bulgaria,0.03,Somalia 2397 | 2015,Hungary,0.724,Algeria 2398 | 2015,Hungary,0.02,Libya 2399 | 2015,Hungary,0.137,Morocco 2400 | 2015,Hungary,0.684,Tunisia 2401 | 2015,Hungary,0.035,Egypt 2402 | 2015,Hungary,0.003,South Africa 2403 | 2015,Hungary,0.103,Angola 2404 | 2015,Hungary,0,Burundi 2405 | 2015,Hungary,0.04,Cameroon 2406 | 2015,Hungary,0.001,Congo 2407 | 2015,Hungary,0.005,Democratic Republic of the Congo 2408 | 2015,Hungary,0,Benin 2409 | 2015,Hungary,0.057,Ethiopia 2410 | 2015,Hungary,0.031,Gambia 2411 | 2015,Hungary,0.023,Ghana 2412 | 2015,Hungary,0.002,Côte d'Ivoire 2413 | 2015,Hungary,0.035,Kenya 2414 | 2015,Hungary,0,Madagascar 2415 | 2015,Hungary,0.012,Mauritius 2416 | 2015,Hungary,0,Mozambique 2417 | 2015,Hungary,0,Niger 2418 | 2015,Hungary,0.951,Nigeria 2419 | 2015,Hungary,0.002,Zimbabwe 2420 | 2015,Hungary,0.002,Rwanda 2421 | 2015,Hungary,0,Senegal 2422 | 2015,Hungary,0.002,Seychelles 2423 | 2015,Hungary,0.002,Eritrea 2424 | 2015,Hungary,0.016,Sierra Leone 2425 | 2015,Hungary,0.018,Somalia 2426 | 2015,Hungary,0.036,Namibia 2427 | 2015,Hungary,0.036,Sudan 2428 | 2015,Hungary,0.011,South Sudan 2429 | 2015,Hungary,0.014,Tanzania 2430 | 2015,Hungary,0,Togo 2431 | 2015,Hungary,0.028,Uganda 2432 | 2015,Hungary,0,Burkina Faso 2433 | 2015,Hungary,0.001,Zambia 2434 | 2015,Poland,0.002,Algeria 2435 | 2015,Poland,0.004,Libya 2436 | 2015,Poland,0.023,Morocco 2437 | 2015,Poland,0.268,Tunisia 2438 | 2015,Poland,0.055,Egypt 2439 | 2015,Poland,0.061,South Africa 2440 | 2015,Poland,0.195,Angola 2441 | 2015,Poland,0.008,Burundi 2442 | 2015,Poland,0.012,Cameroon 2443 | 2015,Poland,0.002,Cabo Verde 2444 | 2015,Poland,0.002,Congo 2445 | 2015,Poland,0.014,Democratic Republic of the Congo 2446 | 2015,Poland,0.006,Benin 2447 | 2015,Poland,0.515,Ethiopia 2448 | 2015,Poland,0.002,Gambia 2449 | 2015,Poland,0.024,Ghana 2450 | 2015,Poland,0.002,Guinea 2451 | 2015,Poland,0.002,Equatorial Guinea 2452 | 2015,Poland,0.65,Kenya 2453 | 2015,Poland,0.01,Liberia 2454 | 2015,Poland,0.016,Malawi 2455 | 2015,Poland,0.009,Mali 2456 | 2015,Poland,0.021,Mauritania 2457 | 2015,Poland,0.019,Nigeria 2458 | 2015,Poland,0.024,Zimbabwe 2459 | 2015,Poland,0.124,Rwanda 2460 | 2015,Poland,0.002,Senegal 2461 | 2015,Poland,0.005,Sudan 2462 | 2015,Poland,0.009,South Sudan 2463 | 2015,Poland,0.46,Tanzania 2464 | 2015,Poland,0.232,Uganda 2465 | 2015,Poland,0.02,Burkina Faso 2466 | 2015,Poland,0.048,Zambia 2467 | 2015,Poland,14.607,Angola 2468 | 2015,Poland,26.772,Ethiopia 2469 | 2015,Romania,0.086,Algeria 2470 | 2015,Romania,0.019,Libya 2471 | 2015,Romania,0.851,Morocco 2472 | 2015,Romania,1.456,Tunisia 2473 | 2015,Romania,0.192,Egypt 2474 | 2015,Romania,0.209,Angola 2475 | 2015,Romania,0.001,Botswana 2476 | 2015,Romania,0.012,Burundi 2477 | 2015,Romania,0.037,Cameroon 2478 | 2015,Romania,0.002,Central African Republic 2479 | 2015,Romania,0.001,Chad 2480 | 2015,Romania,0.016,Congo 2481 | 2015,Romania,0.003,Benin 2482 | 2015,Romania,0.008,Ethiopia 2483 | 2015,Romania,0.003,Gabon 2484 | 2015,Romania,0.022,Ghana 2485 | 2015,Romania,0.011,Guinea 2486 | 2015,Romania,0.017,Côte d'Ivoire 2487 | 2015,Romania,0.032,Kenya 2488 | 2015,Romania,0.002,Madagascar 2489 | 2015,Romania,0.107,Mauritius 2490 | 2015,Romania,0.526,Nigeria 2491 | 2015,Romania,0.036,Zimbabwe 2492 | 2015,Romania,0.006,Rwanda 2493 | 2015,Romania,0.004,Senegal 2494 | 2015,Romania,0.001,Seychelles 2495 | 2015,Romania,0.006,Somalia 2496 | 2015,Romania,0.001,Namibia 2497 | 2015,Romania,0.037,Sudan 2498 | 2015,Romania,0.01,Tanzania 2499 | 2015,Romania,0.003,Togo 2500 | 2015,Romania,0.004,Uganda 2501 | 2015,Romania,0.002,Zambia 2502 | 2015,Estonia,0.099,Ethiopia 2503 | 2015,Estonia,0.02,Ghana 2504 | 2015,Estonia,0.006,Côte d'Ivoire 2505 | 2015,Estonia,0.032,Kenya 2506 | 2015,Estonia,0.014,São Tomé and Principe 2507 | 2015,Estonia,0.029,Sierra Leone 2508 | 2015,Estonia,0.088,Uganda 2509 | 2015,Latvia,0.013,Egypt 2510 | 2015,Lithuania,0,Morocco 2511 | 2015,Lithuania,0.011,Ethiopia 2512 | 2015,Lithuania,0.011,Malawi 2513 | 2015,Russia,0.6,Morocco 2514 | 2015,Russia,1.123,Tunisia 2515 | 2015,Russia,0.776,Egypt 2516 | 2015,Russia,0.056,Angola 2517 | 2015,Russia,0.113,Botswana 2518 | 2015,Russia,0.151,Cameroon 2519 | 2015,Russia,1.212,Congo 2520 | 2015,Russia,0.086,Benin 2521 | 2015,Russia,0.181,Ethiopia 2522 | 2015,Russia,6.255,Guinea 2523 | 2015,Russia,2.479,Liberia 2524 | 2015,Russia,7.996,Mozambique 2525 | 2015,Russia,2.479,Sierra Leone 2526 | 2015,Russia,0.059,Namibia 2527 | 2015,Russia,1.544,Sudan 2528 | 2015,Russia,1.368,Tanzania 2529 | 2015,Russia,1.084,Uganda 2530 | 2015,Canada,0.078,Algeria 2531 | 2015,Canada,1.267,Libya 2532 | 2015,Canada,6.08,Morocco 2533 | 2015,Canada,1.509,Tunisia 2534 | 2015,Canada,14.281,Egypt 2535 | 2015,Canada,4.36,South Africa 2536 | 2015,Canada,0.055,Angola 2537 | 2015,Canada,0.628,Botswana 2538 | 2015,Canada,4.205,Burundi 2539 | 2015,Canada,3.902,Cameroon 2540 | 2015,Canada,17.589,Central African Republic 2541 | 2015,Canada,5.367,Chad 2542 | 2015,Canada,0.324,Congo 2543 | 2015,Canada,34.876,Democratic Republic of the Congo 2544 | 2015,Canada,6.631,Benin 2545 | 2015,Canada,103.243,Ethiopia 2546 | 2015,Canada,0.107,Gabon 2547 | 2015,Canada,0.044,Gambia 2548 | 2015,Canada,74.718,Ghana 2549 | 2015,Canada,15.495,Guinea 2550 | 2015,Canada,0.1,Equatorial Guinea 2551 | 2015,Canada,3.594,Côte d'Ivoire 2552 | 2015,Canada,34.924,Kenya 2553 | 2015,Canada,0.017,Lesotho 2554 | 2015,Canada,6.683,Liberia 2555 | 2015,Canada,3.648,Madagascar 2556 | 2015,Canada,8.647,Malawi 2557 | 2015,Canada,87.995,Mali 2558 | 2015,Canada,0.774,Mauritania 2559 | 2015,Canada,0.036,Mauritius 2560 | 2015,Canada,42.425,Mozambique 2561 | 2015,Canada,10.53,Niger 2562 | 2015,Canada,28.777,Nigeria 2563 | 2015,Canada,4.536,Zimbabwe 2564 | 2015,Canada,3.047,Rwanda 2565 | 2015,Canada,0.098,São Tomé and Principe 2566 | 2015,Canada,57.815,Senegal 2567 | 2015,Canada,1.182,Eritrea 2568 | 2015,Canada,13.094,Sierra Leone 2569 | 2015,Canada,20.745,Somalia 2570 | 2015,Canada,0.782,Djibouti 2571 | 2015,Canada,12.653,Sudan 2572 | 2015,Canada,88.054,South Sudan 2573 | 2015,Canada,0.275,Swaziland 2574 | 2015,Canada,82.733,Tanzania 2575 | 2015,Canada,0.314,Togo 2576 | 2015,Canada,8.716,Uganda 2577 | 2015,Canada,24.307,Burkina Faso 2578 | 2015,Canada,2.802,Zambia 2579 | 2015,United States,4.876,Algeria 2580 | 2015,United States,20.761,Libya 2581 | 2015,United States,30.956,Morocco 2582 | 2015,United States,20.723,Tunisia 2583 | 2015,United States,106.55,Egypt 2584 | 2015,United States,336.773,South Africa 2585 | 2015,United States,63.742,Angola 2586 | 2015,United States,50.432,Botswana 2587 | 2015,United States,42.008,Burundi 2588 | 2015,United States,81.366,Cameroon 2589 | 2015,United States,11.761,Cabo Verde 2590 | 2015,United States,68.128,Central African Republic 2591 | 2015,United States,79.08,Chad 2592 | 2015,United States,1.06,Comoros 2593 | 2015,United States,2.542,Congo 2594 | 2015,United States,769.694,Democratic Republic of the Congo 2595 | 2015,United States,35.726,Benin 2596 | 2015,United States,747.617,Ethiopia 2597 | 2015,United States,8.635,Gabon 2598 | 2015,United States,2.328,Gambia 2599 | 2015,United States,184.991,Ghana 2600 | 2015,United States,76.737,Guinea 2601 | 2015,United States,3.4,Guinea-Bissau 2602 | 2015,United States,0.19,Equatorial Guinea 2603 | 2015,United States,69.477,Côte d'Ivoire 2604 | 2015,United States,714.049,Kenya 2605 | 2015,United States,26.523,Lesotho 2606 | 2015,United States,514.217,Liberia 2607 | 2015,United States,153.114,Madagascar 2608 | 2015,United States,249.166,Malawi 2609 | 2015,United States,162.775,Mali 2610 | 2015,United States,24.314,Mauritania 2611 | 2015,United States,0.157,Mauritius 2612 | 2015,United States,302.678,Mozambique 2613 | 2015,United States,112.026,Niger 2614 | 2015,United States,492.842,Nigeria 2615 | 2015,United States,155.849,Zimbabwe 2616 | 2015,United States,198.457,Rwanda 2617 | 2015,United States,0.707,São Tomé and Principe 2618 | 2015,United States,268.66,Senegal 2619 | 2015,United States,0.032,Seychelles 2620 | 2015,United States,0.08,Eritrea 2621 | 2015,United States,112.787,Sierra Leone 2622 | 2015,United States,207.205,Somalia 2623 | 2015,United States,5.657,Djibouti 2624 | 2015,United States,62.312,Namibia 2625 | 2015,United States,274.094,Sudan 2626 | 2015,United States,598.062,South Sudan 2627 | 2015,United States,36.098,Swaziland 2628 | 2015,United States,453.427,Tanzania 2629 | 2015,United States,3.043,Togo 2630 | 2015,United States,414.125,Uganda 2631 | 2015,United States,58.631,Burkina Faso 2632 | 2015,United States,267.928,Zambia 2633 | 2015,Israel,0.082,Morocco 2634 | 2015,Israel,0.333,South Africa 2635 | 2015,Israel,0.013,Angola 2636 | 2015,Israel,0.093,Botswana 2637 | 2015,Israel,0.007,Burundi 2638 | 2015,Israel,0.099,Cameroon 2639 | 2015,Israel,0.002,Cabo Verde 2640 | 2015,Israel,0.002,Central African Republic 2641 | 2015,Israel,0.003,Chad 2642 | 2015,Israel,0.007,Congo 2643 | 2015,Israel,0.003,Democratic Republic of the Congo 2644 | 2015,Israel,0.006,Benin 2645 | 2015,Israel,0.13,Ethiopia 2646 | 2015,Israel,0.002,Gambia 2647 | 2015,Israel,0.743,Ghana 2648 | 2015,Israel,0.022,Côte d'Ivoire 2649 | 2015,Israel,0.444,Kenya 2650 | 2015,Israel,0.015,Liberia 2651 | 2015,Israel,0.018,Madagascar 2652 | 2015,Israel,0.031,Malawi 2653 | 2015,Israel,0.002,Mali 2654 | 2015,Israel,0.057,Nigeria 2655 | 2015,Israel,0.007,Zimbabwe 2656 | 2015,Israel,0.021,Rwanda 2657 | 2015,Israel,0.095,Senegal 2658 | 2015,Israel,0.002,Seychelles 2659 | 2015,Israel,0.001,Eritrea 2660 | 2015,Israel,0.009,Sierra Leone 2661 | 2015,Israel,0.003,Djibouti 2662 | 2015,Israel,0.048,South Sudan 2663 | 2015,Israel,0.002,Swaziland 2664 | 2015,Israel,0.029,Tanzania 2665 | 2015,Israel,0.01,Togo 2666 | 2015,Israel,0.031,Uganda 2667 | 2015,Israel,0.341,Burkina Faso 2668 | 2015,Israel,0.003,Zambia 2669 | 2015,Kuwait,56.063,Morocco 2670 | 2015,Kuwait,0.858,Egypt 2671 | 2015,Kuwait,0.664,Central African Republic 2672 | 2015,Kuwait,0.03,Gambia 2673 | 2015,Kuwait,0.299,Liberia 2674 | 2015,Kuwait,1.457,Niger 2675 | 2015,Kuwait,1.078,Somalia 2676 | 2015,Kuwait,4.838,Djibouti 2677 | 2015,Kuwait,1.708,Sudan 2678 | 2015,Kuwait,0.127,Tanzania 2679 | 2015,Kuwait,50.306,Morocco 2680 | 2015,Kuwait,11.168,Tunisia 2681 | 2015,Kuwait,68.441,Egypt 2682 | 2015,Kuwait,0.764,Cabo Verde 2683 | 2015,Kuwait,6.64,Benin 2684 | 2015,Kuwait,9.34,Ethiopia 2685 | 2015,Kuwait,0.283,Gabon 2686 | 2015,Kuwait,8.386,Gambia 2687 | 2015,Kuwait,6.199,Guinea 2688 | 2015,Kuwait,0.112,Côte d'Ivoire 2689 | 2015,Kuwait,0.556,Kenya 2690 | 2015,Kuwait,3.236,Lesotho 2691 | 2015,Kuwait,0.144,Malawi 2692 | 2015,Kuwait,11.897,Mali 2693 | 2015,Kuwait,11.386,Mauritania 2694 | 2015,Kuwait,0.131,Mozambique 2695 | 2015,Kuwait,0.104,Niger 2696 | 2015,Kuwait,6.18,Rwanda 2697 | 2015,Kuwait,11.95,Senegal 2698 | 2015,Kuwait,1.766,Sierra Leone 2699 | 2015,Kuwait,10.41,Djibouti 2700 | 2015,Kuwait,81.055,Sudan 2701 | 2015,Kuwait,0.06,Swaziland 2702 | 2015,Kuwait,8.822,Togo 2703 | 2015,Kuwait,1.421,Uganda 2704 | 2015,Kuwait,1.614,Burkina Faso 2705 | 2015,United Arab Emirates,0.091,Algeria 2706 | 2015,United Arab Emirates,62.667,Libya 2707 | 2015,United Arab Emirates,64.976,Morocco 2708 | 2015,United Arab Emirates,10.066,Tunisia 2709 | 2015,United Arab Emirates,455.735,Egypt 2710 | 2015,United Arab Emirates,0.526,South Africa 2711 | 2015,United Arab Emirates,0.02,Botswana 2712 | 2015,United Arab Emirates,0.143,Burundi 2713 | 2015,United Arab Emirates,0.214,Cameroon 2714 | 2015,United Arab Emirates,0.036,Central African Republic 2715 | 2015,United Arab Emirates,2.02,Chad 2716 | 2015,United Arab Emirates,0.853,Comoros 2717 | 2015,United Arab Emirates,0.384,Congo 2718 | 2015,United Arab Emirates,0.007,Democratic Republic of the Congo 2719 | 2015,United Arab Emirates,0.297,Benin 2720 | 2015,United Arab Emirates,1.512,Ethiopia 2721 | 2015,United Arab Emirates,0.185,Gambia 2722 | 2015,United Arab Emirates,2.788,Ghana 2723 | 2015,United Arab Emirates,0.044,Guinea 2724 | 2015,United Arab Emirates,0.012,Guinea-Bissau 2725 | 2015,United Arab Emirates,0.451,Côte d'Ivoire 2726 | 2015,United Arab Emirates,2.132,Kenya 2727 | 2015,United Arab Emirates,0.005,Liberia 2728 | 2015,United Arab Emirates,0.098,Madagascar 2729 | 2015,United Arab Emirates,1.467,Malawi 2730 | 2015,United Arab Emirates,5.351,Mali 2731 | 2015,United Arab Emirates,35.929,Mauritania 2732 | 2015,United Arab Emirates,1,Mozambique 2733 | 2015,United Arab Emirates,0.651,Niger 2734 | 2015,United Arab Emirates,0.34,Nigeria 2735 | 2015,United Arab Emirates,0.003,Zimbabwe 2736 | 2015,United Arab Emirates,0.594,Rwanda 2737 | 2015,United Arab Emirates,0.816,Senegal 2738 | 2015,United Arab Emirates,1.657,Seychelles 2739 | 2015,United Arab Emirates,36.13,Eritrea 2740 | 2015,United Arab Emirates,19.322,Somalia 2741 | 2015,United Arab Emirates,12.92,Djibouti 2742 | 2015,United Arab Emirates,0.006,Namibia 2743 | 2015,United Arab Emirates,34.211,Sudan 2744 | 2015,United Arab Emirates,1.336,South Sudan 2745 | 2015,United Arab Emirates,2.536,Tanzania 2746 | 2015,United Arab Emirates,0.258,Togo 2747 | 2015,United Arab Emirates,1.025,Uganda 2748 | 2015,United Arab Emirates,0.742,Burkina Faso 2749 | 2015,United Arab Emirates,34.419,Morocco 2750 | 2015,United Arab Emirates,1.688,Tunisia 2751 | 2015,United Arab Emirates,2004.579,Egypt 2752 | 2015,United Arab Emirates,0.898,Benin 2753 | 2015,United Arab Emirates,0.738,Ethiopia 2754 | 2015,United Arab Emirates,0.022,Gambia 2755 | 2015,United Arab Emirates,5.913,Lesotho 2756 | 2015,United Arab Emirates,1.898,Malawi 2757 | 2015,United Arab Emirates,7.316,Mauritania 2758 | 2015,United Arab Emirates,3.158,Sierra Leone 2759 | 2015,United Arab Emirates,59.728,Sudan 2760 | 2015,United Arab Emirates,1.429,Tanzania 2761 | 2015,United Arab Emirates,1.375,Burkina Faso 2762 | 2015,Japan,1.44,Algeria 2763 | 2015,Japan,10.19,Morocco 2764 | 2015,Japan,6.73,Tunisia 2765 | 2015,Japan,27.2,Egypt 2766 | 2015,Japan,10.26,South Africa 2767 | 2015,Japan,1.94,Angola 2768 | 2015,Japan,3.74,Botswana 2769 | 2015,Japan,2.55,Burundi 2770 | 2015,Japan,27.28,Cameroon 2771 | 2015,Japan,4.2,Cabo Verde 2772 | 2015,Japan,18.17,Central African Republic 2773 | 2015,Japan,11.53,Chad 2774 | 2015,Japan,4.36,Comoros 2775 | 2015,Japan,0.94,Congo 2776 | 2015,Japan,43.83,Democratic Republic of the Congo 2777 | 2015,Japan,12.9,Benin 2778 | 2015,Japan,54.2,Ethiopia 2779 | 2015,Japan,2.71,Gabon 2780 | 2015,Japan,2.64,Gambia 2781 | 2015,Japan,25.22,Ghana 2782 | 2015,Japan,26.25,Guinea 2783 | 2015,Japan,3.49,Guinea-Bissau 2784 | 2015,Japan,0.02,Equatorial Guinea 2785 | 2015,Japan,22.03,Côte d'Ivoire 2786 | 2015,Japan,81.86,Kenya 2787 | 2015,Japan,1.9,Lesotho 2788 | 2015,Japan,17.2,Liberia 2789 | 2015,Japan,17.17,Madagascar 2790 | 2015,Japan,26.63,Malawi 2791 | 2015,Japan,20.96,Mali 2792 | 2015,Japan,19.92,Mauritania 2793 | 2015,Japan,1.82,Mauritius 2794 | 2015,Japan,57.21,Mozambique 2795 | 2015,Japan,27.69,Niger 2796 | 2015,Japan,17.02,Nigeria 2797 | 2015,Japan,6.68,Zimbabwe 2798 | 2015,Japan,16.39,Rwanda 2799 | 2015,Japan,1.53,São Tomé and Principe 2800 | 2015,Japan,37.62,Senegal 2801 | 2015,Japan,0.84,Seychelles 2802 | 2015,Japan,2.74,Eritrea 2803 | 2015,Japan,29.18,Sierra Leone 2804 | 2015,Japan,25.46,Somalia 2805 | 2015,Japan,17.84,Djibouti 2806 | 2015,Japan,3.91,Namibia 2807 | 2015,Japan,40.82,Sudan 2808 | 2015,Japan,91.23,South Sudan 2809 | 2015,Japan,0.94,Swaziland 2810 | 2015,Japan,42.38,Tanzania 2811 | 2015,Japan,4.24,Togo 2812 | 2015,Japan,37.06,Uganda 2813 | 2015,Japan,23.56,Burkina Faso 2814 | 2015,Japan,20.61,Zambia 2815 | 2015,Japan,80.07,Morocco 2816 | 2015,Japan,40.61,Tunisia 2817 | 2015,Japan,82.98,Egypt 2818 | 2015,Japan,195.37,Angola 2819 | 2015,Japan,0.69,Botswana 2820 | 2015,Japan,6.1,Cameroon 2821 | 2015,Japan,13.99,Cabo Verde 2822 | 2015,Japan,141.69,Kenya 2823 | 2015,Japan,0.31,Mauritius 2824 | 2015,Japan,5.44,Mozambique 2825 | 2015,Japan,68.31,Nigeria 2826 | 2015,Japan,52.46,Tanzania 2827 | 2015,Japan,33.42,Uganda 2828 | 2015,Japan,3.73,Zambia 2829 | 2015,Korea,3.969,Algeria 2830 | 2015,Korea,0.85,Libya 2831 | 2015,Korea,5.811,Morocco 2832 | 2015,Korea,4.847,Tunisia 2833 | 2015,Korea,1.749,Egypt 2834 | 2015,Korea,0.236,South Africa 2835 | 2015,Korea,1.591,Angola 2836 | 2015,Korea,0.014,Botswana 2837 | 2015,Korea,0.888,Burundi 2838 | 2015,Korea,4.777,Cameroon 2839 | 2015,Korea,0.534,Central African Republic 2840 | 2015,Korea,0.041,Chad 2841 | 2015,Korea,0.171,Comoros 2842 | 2015,Korea,0.112,Congo 2843 | 2015,Korea,9.705,Democratic Republic of the Congo 2844 | 2015,Korea,0.125,Benin 2845 | 2015,Korea,23.514,Ethiopia 2846 | 2015,Korea,0.323,Gabon 2847 | 2015,Korea,0.081,Gambia 2848 | 2015,Korea,10.674,Ghana 2849 | 2015,Korea,0.088,Guinea 2850 | 2015,Korea,0.14,Guinea-Bissau 2851 | 2015,Korea,0.029,Equatorial Guinea 2852 | 2015,Korea,3.538,Côte d'Ivoire 2853 | 2015,Korea,5.108,Kenya 2854 | 2015,Korea,0.209,Lesotho 2855 | 2015,Korea,1.306,Liberia 2856 | 2015,Korea,0.45,Madagascar 2857 | 2015,Korea,3.354,Malawi 2858 | 2015,Korea,0.99,Mali 2859 | 2015,Korea,0.012,Mauritius 2860 | 2015,Korea,8.934,Mozambique 2861 | 2015,Korea,0.534,Niger 2862 | 2015,Korea,5.528,Nigeria 2863 | 2015,Korea,2.517,Zimbabwe 2864 | 2015,Korea,20.261,Rwanda 2865 | 2015,Korea,6.763,Senegal 2866 | 2015,Korea,1.419,Sierra Leone 2867 | 2015,Korea,0.714,Somalia 2868 | 2015,Korea,0.081,Djibouti 2869 | 2015,Korea,0.016,Namibia 2870 | 2015,Korea,5.533,Sudan 2871 | 2015,Korea,3.064,South Sudan 2872 | 2015,Korea,0.716,Swaziland 2873 | 2015,Korea,19.514,Tanzania 2874 | 2015,Korea,0.499,Togo 2875 | 2015,Korea,14.67,Uganda 2876 | 2015,Korea,0.317,Burkina Faso 2877 | 2015,Korea,0.246,Zambia 2878 | 2015,Korea,12.024,Angola 2879 | 2015,Korea,11.919,Cameroon 2880 | 2015,Korea,22.502,Ethiopia 2881 | 2015,Korea,31.162,Ghana 2882 | 2015,Korea,0.816,Kenya 2883 | 2015,Korea,8.165,Mali 2884 | 2015,Korea,33.355,Mozambique 2885 | 2015,Korea,0.669,Rwanda 2886 | 2015,Korea,3.543,Senegal 2887 | 2015,Korea,51.779,Tanzania 2888 | 2015,Korea,8.564,Uganda 2889 | 2015,Thailand,0.017,Morocco 2890 | 2015,Thailand,0.025,Egypt 2891 | 2015,Thailand,0.029,Botswana 2892 | 2015,Thailand,0.01,Cameroon 2893 | 2015,Thailand,0.012,Comoros 2894 | 2015,Thailand,0.019,Congo 2895 | 2015,Thailand,0.027,Ethiopia 2896 | 2015,Thailand,0.078,Gambia 2897 | 2015,Thailand,0.007,Ghana 2898 | 2015,Thailand,0.031,Guinea 2899 | 2015,Thailand,0.02,Côte d'Ivoire 2900 | 2015,Thailand,0.084,Kenya 2901 | 2015,Thailand,0.017,Lesotho 2902 | 2015,Thailand,0.04,Madagascar 2903 | 2015,Thailand,0.112,Malawi 2904 | 2015,Thailand,0.008,Mauritania 2905 | 2015,Thailand,0.036,Mauritius 2906 | 2015,Thailand,0.105,Mozambique 2907 | 2015,Thailand,0.016,Nigeria 2908 | 2015,Thailand,0.057,Zimbabwe 2909 | 2015,Thailand,0.006,Senegal 2910 | 2015,Thailand,0.005,Seychelles 2911 | 2015,Thailand,0.078,Eritrea 2912 | 2015,Thailand,0.004,Somalia 2913 | 2015,Thailand,0.09,Sudan 2914 | 2015,Thailand,0.021,Swaziland 2915 | 2015,Thailand,0.177,Tanzania 2916 | 2015,Thailand,0.025,Togo 2917 | 2015,Thailand,0.109,Uganda 2918 | 2015,Thailand,0.018,Zambia 2919 | 2015,Timor Leste,0.5,Cabo Verde 2920 | 2015,Australia,0.031,Algeria 2921 | 2015,Australia,0.062,Morocco 2922 | 2015,Australia,0.068,Tunisia 2923 | 2015,Australia,1.526,Egypt 2924 | 2015,Australia,2.001,South Africa 2925 | 2015,Australia,0.05,Angola 2926 | 2015,Australia,1.146,Botswana 2927 | 2015,Australia,0.602,Burundi 2928 | 2015,Australia,1.152,Cameroon 2929 | 2015,Australia,0.115,Cabo Verde 2930 | 2015,Australia,1.546,Central African Republic 2931 | 2015,Australia,0.029,Chad 2932 | 2015,Australia,0.101,Comoros 2933 | 2015,Australia,0.105,Congo 2934 | 2015,Australia,0.522,Democratic Republic of the Congo 2935 | 2015,Australia,0.029,Benin 2936 | 2015,Australia,3.878,Ethiopia 2937 | 2015,Australia,0.019,Gabon 2938 | 2015,Australia,0.395,Gambia 2939 | 2015,Australia,2.977,Ghana 2940 | 2015,Australia,0.063,Guinea 2941 | 2015,Australia,0.006,Guinea-Bissau 2942 | 2015,Australia,0.027,Equatorial Guinea 2943 | 2015,Australia,0.185,Côte d'Ivoire 2944 | 2015,Australia,7.707,Kenya 2945 | 2015,Australia,1.039,Lesotho 2946 | 2015,Australia,1.563,Liberia 2947 | 2015,Australia,0.455,Madagascar 2948 | 2015,Australia,5.444,Malawi 2949 | 2015,Australia,0.221,Mali 2950 | 2015,Australia,0.054,Mauritania 2951 | 2015,Australia,0.591,Mauritius 2952 | 2015,Australia,3.381,Mozambique 2953 | 2015,Australia,0.273,Niger 2954 | 2015,Australia,2.09,Nigeria 2955 | 2015,Australia,8.15,Zimbabwe 2956 | 2015,Australia,1.546,Rwanda 2957 | 2015,Australia,0.036,São Tomé and Principe 2958 | 2015,Australia,0.201,Senegal 2959 | 2015,Australia,0.739,Seychelles 2960 | 2015,Australia,0.032,Eritrea 2961 | 2015,Australia,10.818,Sierra Leone 2962 | 2015,Australia,7.183,Somalia 2963 | 2015,Australia,0.035,Djibouti 2964 | 2015,Australia,0.406,Namibia 2965 | 2015,Australia,0.199,Sudan 2966 | 2015,Australia,8.027,South Sudan 2967 | 2015,Australia,0.8,Swaziland 2968 | 2015,Australia,5.684,Tanzania 2969 | 2015,Australia,0.192,Togo 2970 | 2015,Australia,3.719,Uganda 2971 | 2015,Australia,0.119,Burkina Faso 2972 | 2015,Australia,2.929,Zambia 2973 | 2015,New Zealand,0.03,Egypt 2974 | 2015,New Zealand,0.11,South Africa 2975 | 2015,New Zealand,0.61,Botswana 2976 | 2015,New Zealand,0.21,Cameroon 2977 | 2015,New Zealand,0.95,Comoros 2978 | 2015,New Zealand,0.24,Ethiopia 2979 | 2015,New Zealand,0.32,Ghana 2980 | 2015,New Zealand,1.25,Kenya 2981 | 2015,New Zealand,0.07,Malawi 2982 | 2015,New Zealand,0.1,Mauritius 2983 | 2015,New Zealand,0.17,Nigeria 2984 | 2015,New Zealand,0.26,Zimbabwe 2985 | 2015,New Zealand,0.21,Rwanda 2986 | 2015,New Zealand,0.06,Seychelles 2987 | 2015,New Zealand,0.01,Sierra Leone 2988 | 2015,New Zealand,0.04,Somalia 2989 | 2015,New Zealand,0.03,Namibia 2990 | 2015,New Zealand,0.04,Swaziland 2991 | 2015,New Zealand,0.75,Tanzania 2992 | 2015,New Zealand,0.12,Uganda 2993 | 2015,New Zealand,0.17,Zambia 2994 | --------------------------------------------------------------------------------