Skip to content

Instantly share code, notes, and snippets.

@micahstubbs
Last active June 14, 2016 23:16
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save micahstubbs/9f2151b01d6e289295f1 to your computer and use it in GitHub Desktop.
Save micahstubbs/9f2151b01d6e289295f1 to your computer and use it in GitHub Desktop.
Threatened Species
license: CC0-1.0
node_modules
var gulp = require('gulp');
var EXPRESS_PORT = 4000;
var EXPRESS_ROOT = __dirname;
var LIVERELOAD_PORT = 35729;
// Let's make things more readable by
// encapsulating each part's setup
// in its own method
function startExpress() {
var express = require('express');
var app = express();
app.use(require('connect-livereload')());
app.use(express.static(EXPRESS_ROOT));
app.listen(EXPRESS_PORT);
}
// We'll need a reference to the tinylr
// object to send notifications of file changes
// further down
var lr;
function startLivereload() {
lr = require('tiny-lr')();
lr.listen(LIVERELOAD_PORT);
}
// Notifies livereload of changes detected
// by `gulp.watch()`
function notifyLivereload(event) {
// `gulp.watch()` events provide an absolute path
// so we need to make it relative to the server root
var fileName = require('path').relative(EXPRESS_ROOT, event.path);
lr.changed({
body: {
files: [fileName]
}
});
}
// Default task that will be run
// when no parameter is provided
// to gulp
gulp.task('default', function () {
startExpress();
startLivereload();
gulp.watch('*.html', notifyLivereload)
console.log('Express server running at http://localhost:4000/')
console.log('tiny-lr running at http://localhost:35729/');
});
<!--
a friendly iteration on shampshire’s block 'Redlist scatter plot'
https://gist.github.com/shampshire/bcb47fad9f73fe93ffb8/download#
-->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Red List Working Bar Chart</title>
<script type="text/javascript" src="https://d3js.org/d3.v3.js"></script>
<script type"text/javascript" src="legend.js"></script>
<style type="text/css">
body {
background-color: white;
font-family: Helvetica, Arial, sans-serif;
}
span.filetype {
color: grey;
font-size: 8px;
}
h1 {
font-size: 20px;
margin: 0;
}
p {
font-size: 12px;
margin: 10px 0 0 0;
width: 600px;
}
svg {
background-color: white;
}
.axis path,
.axis line {
fill: none;
stroke: grey;
shape-rendering: crispEdges;
}
.axis text {
font-family: sans-serif;
font-size: 10px;
}
.label {
font-family: sans-serif;
font-size: 14px;
font-weight: bold;
font-color: grey;
}
</style>
</head>
<body>
<h1>Threatened Mammal Species vs. Total Threatened Species by Country</h1>
<p>IUCN Redlist summary showing number of threatened mammal species versus total threatened species by country. "Threatened" refers to those species classed as Vulnerable, Endangered, or Critically Endangered. Source: <a href="http://cmsdocs.s3.amazonaws.com/summarystats/2014_3_Summary_Stats_Page_Documents/2014_3_RL_Stats_Table_5.pdf">IUCN</a><span class="filetype"> [PDF]</span></p>
<p id="color">Click here to color-code countries by continent.</p>
<p id="nocolor">Click here to remove the color-codes</p>
<script type="text/javascript">
var w = 700;
var h = 600;
var padding = [ 20, 10, 50, 100 ]; //Top, right, bottom, left
var xScale = d3.scale.sqrt()
.range([ padding[3], w - padding[1] - padding[3] ]);
var yScale = d3.scale.sqrt()
.range([ padding[0], h - padding[2] ]);
var colorScale = d3.scale.category10();
var xAxis = d3.svg.axis()
.scale(xScale)
.orient("bottom")
.ticks(10)
var yAxis = d3.svg.axis()
.scale(yScale)
.orient("left")
.ticks(10);
var svg = d3.select("body")
.append("svg")
.attr("width", w)
.attr("height", h);
d3.csv("redbook2.csv", function(data) {
data.sort(function(a, b) {
return d3.descending(+a.Total, +b.Total);
});
xScale.domain([
d3.min(data, function(d) {
return +d.Mammals;
}),
d3.max(data, function(d) {
return +d.Mammals;
})
]);
yScale.domain([
d3.max(data, function(d) {
return +d.Total;
}),
d3.min(data, function(d) {
return +d.Total;
})
]);
colorScale.domain(data.map(function(d) { return d.Continent; } ));
var circles = svg.selectAll("circle")
.data(data)
.enter()
.append("circle");
circles.attr("cx", function(d) {
return xScale(+d.Mammals);
})
.attr("cy", function(d) {
return yScale(+d.Total);
})
.attr("r", 0.1)
.attr("fill","grey")
//.attr("fill", function(d) {
// return colorScale(d.Continent);
//})
.append("title")
.text(function(d) {
return d.Country + " Mammals: " + d.Mammals + "/Total: " +d.Total;
});
circles.sort(function(a, b) {
return d3.ascending(+a.Total, +b.Total);
})
.transition()
.delay(function(d, i) {
return i * 5;
})
.duration(1000)
.attr("r", 3);
var labels = svg.selectAll("text")
.data(data)
.enter()
.append("text");
labels.attr("x", function(d) {
return xScale(+d.Mammals);
})
.attr("y", function(d) {
return yScale((+d.Total)+25);
})
.text( function (d) {
if (+d.Mammals>40 || +d.Total>400) {
return d.Country;
}
})
.attr("font-family", "sans-serif")
.attr("font-size", "10px")
.attr("fill", "grey")
.attr("opacity",0)
.attr("text-anchor","middle")
.transition()
.delay(2000)
.duration(2000)
.attr("opacity",100);
;
svg.append("g")
.attr("class", "x axis")
.attr("transform", "translate(0," + (h - padding[2] + 10) + ")")
.call(xAxis);
svg.append("g")
.attr("class", "y axis")
.attr("transform", "translate(" + (padding[3] - 10) + ",0)")
.call(yAxis);
svg.append("text")
.attr("class", "x label")
.attr("text-anchor", "middle")
.attr("x", w/2)
.attr("y", h - 5)
.text("Threatened mammal species (sqrt scale)");
svg.append("text")
.attr("class", "y label")
.attr("text-anchor", "middle")
.attr("x", 0)
.attr("y", 0)
.attr("dy",20)
.attr("dx",-(w/2)+padding[0]+50)
.attr("transform", "rotate(-90)")
.text("Total threatened species (sqrt scale)");
});
d3.selectAll("p")
.on("click", function() {
var pID = d3.select(this).attr("id");
if(pID=="color") {
d3.csv("redbook2.csv", function(data) {
data.sort(function(a, b) {
return d3.ascending(a.Total, b.Total);
});
colorScale.domain(data.map(function(d) { return toTitleCase(d.Continent); } ));
circles = svg.selectAll("circle");
circles.transition()
.duration(1200)
.attr("fill", function(d) {
return colorScale(toTitleCase(d.Continent));
});
// draw the legend
verticalLegend = d3.svg.legend()
.labelFormat("none")
.cellPadding(5)
.orientation("vertical")
.units("")
.cellWidth(10).cellHeight(10)
.inputScale(colorScale)
.cellStepping(10);
d3.select("svg").append("g")
.attr("transform", "translate(400,425)")
.attr("class", "legend")
.call(verticalLegend)
.style("opacity", 0);
// fade in the legend
d3.selectAll(".legend")
.transition()
.duration(1200)
.style("opacity", 1);
})
} else {
circles = svg.selectAll("circle");
circles.transition()
.duration(1200)
.attr("fill", "grey");
// remove the legend
d3.selectAll(".legend")
.transition()
.duration(1200)
.style("opacity", 0)
.remove();
}
});
// http://stackoverflow.com/questions/196972/convert-string-to-title-case-with-javascript
function toTitleCase(str)
{
return str.replace(/\w\S*/g, function(txt){return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();});
}
</script>
</body>
</html>
d3.svg.legend = function() {
var legendValues=
[
{color: "red", stop: [0,1]},
{color: "blue", stop: [1,2]},
{color: "purple", stop: [2,3]},
{color: "yellow", stop: [3,4]},
{color: "Aquamarine", stop: [4,5]}
];
var legendScale;
var cellWidth = 15;
var cellHeight = 10;
var adjustable = false;
var labelFormat = d3.format(".01f");
var labelUnits = "units";
var lastValue = 6;
var changeValue = 1;
var orientation = "horizontal";
var cellPadding = 0;
function legend(g) {
function cellRange(valuePosition, changeVal) {
legendValues[valuePosition].stop[0] += changeVal;
legendValues[valuePosition - 1].stop[1] += changeVal;
redraw();
}
function redraw() {
g.selectAll("g.legendCells")
.data(legendValues)
.exit().remove();
g.selectAll("g.legendCells")
.select("rect")
.style("fill", function(d) {return d.color});
if (orientation == "vertical") {
g.selectAll("g.legendCells")
.select("text.breakLabels")
.style("display", "block")
.style("text-anchor", "start")
.attr("x", cellWidth + cellPadding)
.attr("y", 5 + (cellHeight / 2))
.text(function(d) {return labelFormat(d.stop[0]) + (d.stop[1].length > 0 ? " - " + labelFormat(d.stop[1]) : "")})
g.selectAll("g.legendCells")
.attr("transform", function(d,i) {return "translate(0," + (i * (cellHeight + cellPadding)) + ")" });
}
else {
g.selectAll("g.legendCells")
.attr("transform", function(d,i) {return "translate(" + (i * cellWidth) + ",0)" });
g.selectAll("text.breakLabels")
.style("text-anchor", "middle")
.attr("x", 0).attr("y", -7)
.style("display", function(d,i) {return i == 0 ? "none" : "block"})
.text(function(d) {return labelFormat(d.stop[0])});
}
}
g.selectAll("g.legendCells")
.data(legendValues)
.enter()
.append("g")
.attr("class", "legendCells")
.attr("transform", function(d,i) {return "translate(" + (i * (cellWidth + cellPadding)) + ",0)" })
g.selectAll("g.legendCells")
.append("rect")
.attr("height", cellHeight)
.attr("width", cellWidth)
.style("fill", function(d) {return "d.color"})
.style("stroke", "none")
.style("stroke-width", "2px");
g.selectAll("g.legendCells")
.append("text")
.attr("class", "breakLabels")
.style("pointer-events", "none");
g.append("text")
.text(labelUnits)
.attr("y", -7);
redraw();
}
legend.inputScale = function(newScale) {
if (!arguments.length) return scale;
scale = newScale;
legendValues = [];
if (scale.invertExtent) {
//Is a quantile scale
scale.range().forEach(function(el) {
var cellObject = {color: el, stop: scale.invertExtent(el)}
legendValues.push(cellObject)
})
}
else {
scale.domain().forEach(function (el) {
var cellObject = {color: scale(el), stop: [el,""]}
legendValues.push(cellObject)
})
}
return this;
}
legend.scale = function(testValue) {
var foundColor = legendValues[legendValues.length - 1].color;
for (el in legendValues) {
if(testValue < legendValues[el].stop[1]) {
foundColor = legendValues[el].color;
break;
}
}
return foundColor;
}
legend.cellWidth = function(newCellSize) {
if (!arguments.length) return cellWidth;
cellWidth = newCellSize;
return this;
}
legend.cellHeight = function(newCellSize) {
if (!arguments.length) return cellHeight;
cellHeight = newCellSize;
return this;
}
legend.cellPadding = function(newCellPadding) {
if (!arguments.length) return cellPadding;
cellPadding = newCellPadding;
return this;
}
legend.cellExtent = function(incColor,newExtent) {
var selectedStop = legendValues.filter(function(el) {return el.color == incColor})[0].stop;
if (arguments.length == 1) return selectedStop;
legendValues.filter(function(el) {return el.color == incColor})[0].stop = newExtent;
return this;
}
legend.cellStepping = function(incStep) {
if (!arguments.length) return changeValue;
changeValue = incStep;
return this;
}
legend.units = function(incUnits) {
if (!arguments.length) return labelUnits;
labelUnits = incUnits;
return this;
}
legend.orientation = function(incOrient) {
if (!arguments.length) return orientation;
orientation = incOrient;
return this;
}
legend.labelFormat = function(incFormat) {
if (!arguments.length) return labelFormat;
labelFormat = incFormat;
if (incFormat == "none") {
labelFormat = function(inc) {return inc};
}
return this;
}
return legend;
}
{
"name": "threatened-species",
"version": "1.0.0",
"description": "",
"main": "index.html",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "MIT",
"devDependencies": {
"connect-livereload": "^0.5.3",
"express": "^4.12.3",
"tiny-lr": "^0.1.5"
}
}
Continent Region Country Mammals Birds Reptiles Amphibians Fishes Molluscs Other Inverts Plants Total
AFRICA North Africa Algeria 14 11 8 3 35 10 15 17 113
AFRICA North Africa Egypt 18 11 12 0 41 0 54 3 139
AFRICA North Africa Libya 12 4 6 0 23 0 1 3 49
AFRICA North Africa Morocco 17 12 13 2 45 35 11 34 169
AFRICA North Africa Tunisia 13 7 6 1 34 6 8 7 82
AFRICA North Africa Western Sahara 9 2 1 0 25 0 3 0 40
AFRICA Sub-Saharan Africa Angola 16 26 4 0 41 5 4 34 130
AFRICA Sub-Saharan Africa Benin 12 10 5 0 28 0 3 16 74
AFRICA Sub-Saharan Africa Botswana 8 12 0 0 2 0 0 2 24
AFRICA Sub-Saharan Africa Burkina Faso 9 10 2 0 4 1 0 3 29
AFRICA Sub-Saharan Africa Burundi 11 13 0 5 17 4 3 7 60
AFRICA Sub-Saharan Africa Cameroon 41 25 6 55 109 11 16 425 688
AFRICA Sub-Saharan Africa Cape Verde 4 4 5 0 22 12 1 3 51
AFRICA Sub-Saharan Africa Central African Republic 12 14 2 0 3 0 0 22 53
AFRICA Sub-Saharan Africa Chad 14 12 2 0 1 4 0 5 38
AFRICA Sub-Saharan Africa Comoros 5 10 4 0 7 0 73 7 106
AFRICA Sub-Saharan Africa Congo 14 5 4 0 47 5 2 41 118
AFRICA Sub-Saharan Africa Congo The Democratic Republic of the 34 36 5 13 84 43 10 107 332
AFRICA Sub-Saharan Africa Côte d'Ivoire 26 20 6 14 47 3 3 107 226
AFRICA Sub-Saharan Africa Djibouti 7 10 0 0 17 1 56 3 94
AFRICA Sub-Saharan Africa Equatorial Guinea 22 7 7 4 29 0 5 77 151
AFRICA Sub-Saharan Africa Eritrea 10 15 6 0 20 1 57 4 113
AFRICA Sub-Saharan Africa Ethiopia 33 29 1 12 14 4 11 40 144
AFRICA Sub-Saharan Africa Gabon 18 5 5 3 61 0 3 132 227
AFRICA Sub-Saharan Africa Gambia 10 10 4 0 24 0 2 5 55
AFRICA Sub-Saharan Africa Ghana 19 19 5 12 44 0 5 119 223
AFRICA Sub-Saharan Africa Guinea 23 18 8 6 67 1 6 34 163
AFRICA Sub-Saharan Africa Guinea-Bissau 14 8 6 0 31 0 2 5 66
AFRICA Sub-Saharan Africa Kenya 31 38 9 10 69 17 67 187 428
AFRICA Sub-Saharan Africa Lesotho 2 7 0 0 1 0 3 4 17
AFRICA Sub-Saharan Africa Liberia 21 13 6 4 54 1 10 49 158
AFRICA Sub-Saharan Africa Madagascar 116 35 139 69 86 24 86 374 929
AFRICA Sub-Saharan Africa Malawi 9 17 3 5 98 7 9 23 171
AFRICA Sub-Saharan Africa Mali 12 14 3 0 2 0 0 8 39
AFRICA Sub-Saharan Africa Mauritania 16 13 5 0 32 0 3 0 69
AFRICA Sub-Saharan Africa Mauritius 7 9 8 0 17 28 90 91 250
AFRICA Sub-Saharan Africa Mayotte 1 3 7 0 4 0 69 0 84
AFRICA Sub-Saharan Africa Mozambique 13 29 12 4 59 3 64 77 261
AFRICA Sub-Saharan Africa Namibia 13 27 5 1 28 0 4 27 105
AFRICA Sub-Saharan Africa Niger 12 10 1 0 4 1 0 3 31
AFRICA Sub-Saharan Africa Nigeria 28 19 8 13 59 1 16 188 332
AFRICA Sub-Saharan Africa Réunion 5 6 0 0 11 16 71 17 126
AFRICA Sub-Saharan Africa Rwanda 23 15 0 6 9 0 2 6 61
AFRICA Sub-Saharan Africa Saint Helena Ascension and Tristan da Cunha 4 19 2 0 12 1 12 30 80
AFRICA Sub-Saharan Africa Sao Tomé and Principe 5 13 5 3 12 1 4 38 81
AFRICA Sub-Saharan Africa Senegal 17 14 7 0 45 10 3 11 107
AFRICA Sub-Saharan Africa Seychelles 6 12 11 6 19 36 283 62 435
AFRICA Sub-Saharan Africa Sierra Leone 20 14 6 2 48 3 5 58 156
AFRICA Sub-Saharan Africa Somalia 15 17 4 0 26 2 60 42 166
AFRICA Sub-Saharan Africa South Africa 25 45 21 19 100 22 180 116 528
AFRICA Sub-Saharan Africa South Sudan 10 16 1 0 0 0 0 15 42
AFRICA Sub-Saharan Africa Sudan 12 20 3 0 21 0 50 16 122
AFRICA Sub-Saharan Africa Swaziland 7 12 0 0 4 0 0 11 34
AFRICA Sub-Saharan Africa Tanzania United Republic of 39 45 29 58 175 15 114 504 979
AFRICA Sub-Saharan Africa Togo 11 10 3 2 24 0 3 12 65
AFRICA Sub-Saharan Africa Uganda 28 23 3 6 61 9 10 49 189
AFRICA Sub-Saharan Africa Zambia 12 17 1 1 20 13 1 14 79
AFRICA Sub-Saharan Africa Zimbabwe 10 16 3 6 3 0 5 17 60
Antarctica Antarctica Antarcticaa 2 4 0 0 0 0 0 0 6
Antarctica Antarctica Bouvet Island 1 1 0 0 1 0 0 0 3
Antarctica Antarctica French Southern Territories 3 12 4 0 3 0 0 0 22
Antarctica Antarctica Heard Island and McDonald Islands 1 10 0 0 1 0 0 0 12
Antarctica Antarctica South Georgia and the South Sandwich Islands 3 6 0 0 0 0 0 0 9
ASIA East Asia China 74 85 43 87 127 15 61 503 995
ASIA East Asia Hong Kong 2 20 5 5 13 1 7 6 59
ASIA East Asia Japan 27 39 14 19 72 33 137 21 362
ASIA East Asia Korea Democratic People's Republic of 9 25 2 1 15 0 3 8 63
ASIA East Asia Korea Republic of 9 28 2 3 22 0 4 7 75
ASIA East Asia Macao 0 4 1 0 5 0 1 0 11
ASIA East Asia Mongolia 11 20 0 0 2 0 3 0 36
ASIA East Asia Taiwan Province of China 10 22 9 10 64 1 127 82 325
ASIA North Asia Belarus 4 6 0 0 2 3 6 1 22
ASIA North Asia Moldova 4 8 2 0 8 2 3 2 29
ASIA North Asia Russian Federation 31 49 9 0 37 8 29 54 217
ASIA North Asia Ukraine 11 14 1 0 22 6 18 16 88
ASIA South & Southeast Asia Bangladesh 34 31 23 1 19 0 7 17 132
ASIA South & Southeast Asia Bhutan 27 18 3 1 3 0 1 12 65
ASIA South & Southeast Asia British Indian Ocean Territory 0 0 2 0 9 0 69 1 81
ASIA South & Southeast Asia Brunei Darussalam 34 23 8 3 7 0 8 104 187
ASIA South & Southeast Asia Cambodia 37 27 19 3 42 1 76 32 237
ASIA South & Southeast Asia Disputed Territory 0 0 0 0 1 0 1 0 2
ASIA South & Southeast Asia India 96 82 53 74 216 7 128 332 988
ASIA South & Southeast Asia Indonesia 185 131 32 32 149 6 282 408 1225
ASIA South & Southeast Asia Lao People's Democratic Republic 45 24 17 6 55 16 5 32 200
ASIA South & Southeast Asia Malaysia 71 48 28 48 73 35 227 706 1236
ASIA South & Southeast Asia Maldives 2 0 3 0 18 0 46 0 69
ASIA South & Southeast Asia Myanmar 46 45 29 0 41 3 74 47 285
ASIA South & Southeast Asia Nepal 32 34 9 3 7 1 2 12 100
ASIA South & Southeast Asia Philippines 39 89 39 48 76 3 234 233 761
ASIA South & Southeast Asia Singapore 11 15 5 0 25 0 173 58 287
ASIA South & Southeast Asia Sri Lanka 31 16 11 56 45 0 130 287 576
ASIA South & Southeast Asia Thailand 57 48 27 4 97 15 196 133 577
ASIA South & Southeast Asia Timor-Leste 4 7 2 0 6 0 1 1 21
ASIA South & Southeast Asia Viet Nam 54 44 43 19 75 18 108 177 538
ASIA West & Central Asia Afghanistan 11 14 1 1 5 0 2 3 37
ASIA West & Central Asia Armenia 9 12 7 0 3 2 7 71 111
ASIA West & Central Asia Azerbaijan 7 14 9 1 12 2 5 42 92
ASIA West & Central Asia Bahrain 3 3 4 0 10 0 13 0 33
ASIA West & Central Asia Cyprus 5 5 5 0 18 1 6 18 58
ASIA West & Central Asia Georgia 10 11 7 1 10 4 11 61 115
ASIA West & Central Asia Iran Islamic Republic of 17 22 13 4 38 2 22 3 121
ASIA West & Central Asia Iraq 14 16 3 1 17 1 16 1 69
ASIA West & Central Asia Israel 15 14 10 2 37 11 62 0 151
ASIA West & Central Asia Jordan 13 10 6 0 12 6 55 1 103
ASIA West & Central Asia Kazakhstan 16 22 1 1 15 2 5 15 77
ASIA West & Central Asia Kuwait 6 8 3 0 12 0 13 0 42
ASIA West & Central Asia Kyrgyzstan 6 12 2 0 3 0 4 14 41
ASIA West & Central Asia Lebanon 10 9 7 0 21 9 6 2 64
ASIA West & Central Asia Oman 10 10 8 0 26 2 29 6 91
ASIA West & Central Asia Pakistan 25 30 10 0 35 0 18 5 123
ASIA West & Central Asia Palestinian Territory Occupied 3 10 4 1 0 2 2 0 22
ASIA West & Central Asia Qatar 3 5 2 0 12 0 13 0 35
ASIA West & Central Asia Saudi Arabia 10 15 3 0 26 1 58 3 116
ASIA West & Central Asia Syrian Arab Republic 16 15 8 0 45 9 10 4 107
ASIA West & Central Asia Tajikistan 8 12 2 0 5 0 3 12 42
ASIA West & Central Asia Turkey 17 16 20 11 127 44 26 103 364
ASIA West & Central Asia Turkmenistan 9 16 2 0 11 1 6 4 49
ASIA West & Central Asia United Arab Emirates 8 9 3 0 14 0 15 0 49
ASIA West & Central Asia Uzbekistan 10 16 2 0 7 1 2 17 55
ASIA West & Central Asia Yemen 9 15 6 1 24 2 66 162 285
EUROPE Europe Albania 3 6 4 2 38 49 7 0 109
EUROPE Europe Andorra 2 1 1 0 0 3 4 0 11
EUROPE Europe Austria 3 9 1 0 11 43 27 13 107
EUROPE Europe Belgium 2 4 0 0 11 6 8 0 31
EUROPE Europe Bosnia and Herzegovina 4 6 3 1 32 17 19 1 83
EUROPE Europe Bulgaria 7 14 2 0 20 25 12 6 86
EUROPE Europe Croatia 8 12 3 2 59 45 21 8 158
EUROPE Europe Czech Republic 2 7 0 0 2 6 19 10 46
EUROPE Europe Denmark 2 3 0 0 15 5 10 1 36
EUROPE Europe Estonia 1 5 0 0 5 3 3 0 17
EUROPE Europe Faroe Islands 4 1 0 0 8 0 0 0 13
EUROPE Europe Finland 1 6 0 0 6 3 7 2 25
EUROPE Europe France 8 9 5 2 46 91 41 32 234
EUROPE Europe Germany 5 7 0 0 23 31 27 17 110
EUROPE Europe Gibraltar 5 3 0 0 12 3 1 0 24
EUROPE Europe Greece 10 12 9 5 75 65 52 58 286
EUROPE Europe Greenland 7 1 0 0 8 0 0 1 17
EUROPE Europe Guernsey 0 0 0 0 2 0 0 0 2
EUROPE Europe Holy See (Vatican City State) 1 0 0 0 0 0 0 0 1
EUROPE Europe Hungary 2 10 1 0 9 8 28 10 68
EUROPE Europe Iceland 6 1 0 0 12 0 0 0 19
EUROPE Europe Ireland 5 3 1 0 22 2 4 1 38
EUROPE Europe Isle of Man 1 0 0 0 2 0 0 0 3
EUROPE Europe Italy 7 10 4 9 46 72 62 66 276
EUROPE Europe Jersey 0 0 0 0 2 0 1 0 3
EUROPE Europe Latvia 1 6 0 0 6 4 8 0 25
EUROPE Europe Liechtenstein 0 0 0 0 0 2 2 0 4
EUROPE Europe Lithuania 3 6 0 0 6 2 5 1 23
EUROPE Europe Luxembourg 0 1 0 0 1 5 2 0 9
EUROPE Europe Macedonia the former Yugoslav Republic of 5 11 2 0 13 61 8 0 100
EUROPE Europe Malta 3 3 0 0 17 3 1 4 31
EUROPE Europe Monaco 2 0 0 0 11 0 2 0 15
EUROPE Europe Montenegro 6 12 3 1 25 21 13 2 83
EUROPE Europe Netherlands 3 4 0 0 13 5 5 0 30
EUROPE Europe Norway 7 4 0 0 19 3 7 3 43
EUROPE Europe Poland 5 8 0 0 7 7 16 10 53
EUROPE Europe Portugal 11 9 4 1 54 76 18 81 254
EUROPE Europe Romania 7 14 2 0 20 11 28 5 87
EUROPE Europe San Marino 0 0 0 0 0 0 1 0 1
EUROPE Europe Serbia 6 11 1 0 11 5 18 5 57
EUROPE Europe Slovakia 3 8 0 0 5 6 17 7 46
EUROPE Europe Slovenia 5 5 1 2 28 32 43 7 123
EUROPE Europe Spain 16 11 20 6 69 141 75 214 552
EUROPE Europe Svalbard and Jan Mayen 2 1 0 0 2 0 0 0 5
EUROPE Europe Sweden 1 4 0 0 12 4 11 4 36
EUROPE Europe Switzerland 2 3 0 1 9 10 33 4 62
EUROPE Europe United Kingdom 5 4 1 0 43 5 12 15 85
NORTH & CENTRAL AMERICA Caribbean Islands Anguilla 1 1 7 0 20 0 10 3 42
NORTH & CENTRAL AMERICA Caribbean Islands Antigua and Barbuda 2 2 6 0 20 0 11 4 45
NORTH & CENTRAL AMERICA Caribbean Islands Aruba 2 1 1 0 15 1 1 2 23
NORTH & CENTRAL AMERICA Caribbean Islands Bahamas 6 7 8 0 31 1 11 8 72
NORTH & CENTRAL AMERICA Caribbean Islands Barbados 3 2 4 0 22 0 11 3 45
NORTH & CENTRAL AMERICA Caribbean Islands Bermuda 4 1 3 0 17 0 28 7 60
NORTH & CENTRAL AMERICA Caribbean Islands Bonaire Sint Eustatius and Saba 3 2 6 0 21 0 11 3 46
NORTH & CENTRAL AMERICA Caribbean Islands Cayman Islands 1 2 4 0 21 1 10 22 61
NORTH & CENTRAL AMERICA Caribbean Islands Cuba 14 18 16 49 36 0 23 176 332
NORTH & CENTRAL AMERICA Caribbean Islands Curaçao 3 2 3 0 21 0 11 2 42
NORTH & CENTRAL AMERICA Caribbean Islands Dominica 3 3 4 2 21 0 11 11 55
NORTH & CENTRAL AMERICA Caribbean Islands Dominican Republic 6 15 14 32 23 0 16 41 147
NORTH & CENTRAL AMERICA Caribbean Islands Grenada 3 1 6 1 21 0 10 3 45
NORTH & CENTRAL AMERICA Caribbean Islands Guadeloupe 5 2 7 3 20 1 15 9 62
NORTH & CENTRAL AMERICA Caribbean Islands Haiti 5 15 15 49 22 0 14 39 159
NORTH & CENTRAL AMERICA Caribbean Islands Jamaica 5 10 10 15 23 0 15 214 292
NORTH & CENTRAL AMERICA Caribbean Islands Martinique 2 4 7 2 13 2 0 9 39
NORTH & CENTRAL AMERICA Caribbean Islands Montserrat 3 3 3 1 19 0 11 5 45
NORTH & CENTRAL AMERICA Caribbean Islands Puerto Rico 3 9 14 14 22 0 0 57 119
NORTH & CENTRAL AMERICA Caribbean Islands Saint Barthélemy 1 0 2 0 4 0 11 2 20
NORTH & CENTRAL AMERICA Caribbean Islands Saint Kitts and Nevis 2 2 5 1 22 0 10 2 44
NORTH & CENTRAL AMERICA Caribbean Islands Saint Lucia 2 5 6 0 22 0 11 6 52
NORTH & CENTRAL AMERICA Caribbean Islands Saint Martin (French part) 2 1 6 0 21 0 10 3 43
NORTH & CENTRAL AMERICA Caribbean Islands Saint Vincent and the Grenadines 2 2 6 1 22 0 10 5 48
NORTH & CENTRAL AMERICA Caribbean Islands Sint Maarten (Dutch part) 2 1 6 0 20 0 10 2 41
NORTH & CENTRAL AMERICA Caribbean Islands Trinidad and Tobago 2 5 5 8 25 0 10 2 57
NORTH & CENTRAL AMERICA Caribbean Islands Turks and Caicos Islands 2 3 4 0 20 0 10 9 48
NORTH & CENTRAL AMERICA Caribbean Islands Virgin Islands British 1 2 9 2 19 0 10 10 53
NORTH & CENTRAL AMERICA Caribbean Islands Virgin Islands U.S. 2 1 10 2 17 0 0 12 44
NORTH & CENTRAL AMERICA Mesoamerica Belize 9 5 8 5 33 0 12 33 105
NORTH & CENTRAL AMERICA Mesoamerica Costa Rica 10 23 12 61 50 1 29 131 317
NORTH & CENTRAL AMERICA Mesoamerica El Salvador 7 6 10 10 14 0 7 29 83
NORTH & CENTRAL AMERICA Mesoamerica Guatemala 17 14 32 80 25 2 7 94 271
NORTH & CENTRAL AMERICA Mesoamerica Honduras 8 12 40 56 31 0 18 119 284
NORTH & CENTRAL AMERICA Mesoamerica Mexico 101 61 97 210 159 7 85 371 1091
NORTH & CENTRAL AMERICA Mesoamerica Nicaragua 7 16 9 10 31 2 16 43 134
NORTH & CENTRAL AMERICA Mesoamerica Panama 16 22 9 49 42 0 22 203 363
NORTH & CENTRAL AMERICA North America Canada 11 13 6 1 38 5 13 6 93
NORTH & CENTRAL AMERICA North America Saint Pierre and Miquelon 4 2 0 0 1 0 0 0 7
NORTH & CENTRAL AMERICA North America United States 35 77 37 56 233 301 269 279 1287
OCEANIA Oceania American Samoa 1 8 6 0 10 5 59 1 90
OCEANIA Oceania Australia 55 50 43 47 109 174 337 91 906
OCEANIA Oceania Christmas Island 3 3 4 0 8 0 18 1 37
OCEANIA Oceania Cocos (Keeling) Islands 2 0 1 0 9 0 20 0 32
OCEANIA Oceania Cook Islands 1 15 3 0 11 0 32 11 73
OCEANIA Oceania Fiji 6 14 14 1 13 68 97 65 278
OCEANIA Oceania French Polynesia 0 31 2 0 30 34 31 47 175
OCEANIA Oceania Guam 2 14 5 0 10 6 54 4 95
OCEANIA Oceania Kiribati 1 5 2 0 11 1 80 0 100
OCEANIA Oceania Marshall Islands 2 3 4 0 13 1 72 0 95
OCEANIA Oceania Micronesia Federated States of 7 10 7 0 19 4 111 5 163
OCEANIA Oceania Nauru 1 2 0 0 9 0 68 0 80
OCEANIA Oceania New Caledonia 9 16 54 0 30 28 97 259 493
OCEANIA Oceania New Zealand 9 69 14 4 34 32 14 21 197
OCEANIA Oceania Niue 1 8 3 0 8 0 30 0 50
OCEANIA Oceania Norfolk Island 0 10 2 0 5 12 11 1 41
OCEANIA Oceania Northern Mariana Islands 4 16 4 0 13 4 53 5 99
OCEANIA Oceania Palau 4 5 3 0 15 40 106 4 177
OCEANIA Oceania Papua New Guinea 39 38 9 11 48 2 179 145 471
OCEANIA Oceania Pitcairn 1 10 0 0 9 5 11 7 43
OCEANIA Oceania Samoa 2 6 5 0 13 1 61 2 90
OCEANIA Oceania Solomon Islands 20 25 5 2 18 2 149 17 238
OCEANIA Oceania Tokelau 0 1 2 0 8 0 35 0 46
OCEANIA Oceania Tonga 2 5 4 0 12 4 43 4 74
OCEANIA Oceania Tuvalu 1 1 3 0 10 1 77 0 93
OCEANIA Oceania United States Minor Outlying Islands 0 10 2 0 12 0 47 0 71
OCEANIA Oceania Vanuatu 7 9 4 0 15 4 88 10 137
OCEANIA Oceania Wallis and Futuna 0 9 2 0 11 1 64 1 88
SOUTH AMERICA South America Argentina 39 49 6 30 36 0 13 70 243
SOUTH AMERICA South America Bolivia Plurinational States of 21 55 3 35 0 2 1 99 216
SOUTH AMERICA South America Brazil 82 164 29 34 86 22 32 516 965
SOUTH AMERICA South America Chile 20 32 2 22 22 1 11 72 182
SOUTH AMERICA South America Colombia 54 119 22 215 53 0 33 245 741
SOUTH AMERICA South America Ecuador 45 96 26 174 53 48 17 1840 2299
SOUTH AMERICA South America Falkland Islands (Malvinas) 4 9 0 0 5 0 0 5 23
SOUTH AMERICA South America French Guiana 8 7 6 3 26 0 0 16 66
SOUTH AMERICA South America Guyana 11 14 5 5 27 0 1 23 86
SOUTH AMERICA South America Paraguay 9 27 3 0 0 0 0 19 58
SOUTH AMERICA South America Peru 54 121 9 111 21 4 4 318 642
SOUTH AMERICA South America Suriname 9 8 5 1 25 0 1 26 75
SOUTH AMERICA South America Uruguay 10 22 5 5 37 0 2 22 103
SOUTH AMERICA South America Venezuela 34 45 14 73 36 1 25 77 305
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment