The area of each country using a circle at the countries centroid, based of County Circles bl.ock
Red dot is Japan
The area of each country using a circle at the countries centroid, based of County Circles bl.ock
Red dot is Japan
| <!DOCTYPE html> | |
| <meta charset="utf-8"> | |
| <style> | |
| body { | |
| font-family: Consolas, monaco, monospace; | |
| color: grey; | |
| background: #eee; | |
| } | |
| span { | |
| color: black; | |
| letter-spacing: 2px; | |
| } | |
| circle { | |
| fill: transparent; | |
| stroke: green; | |
| stroke-width: 3px; | |
| stroke-opacity: 0.6; | |
| } | |
| circle#code-392 { | |
| stroke: red; | |
| fill: red; | |
| } | |
| circle#code-10 { | |
| display: none; | |
| } | |
| </style> | |
| <!-- http://clrs.cc/ --> | |
| <link href="//s3-us-west-2.amazonaws.com/colors-css/2.2.0/colors.min.css" rel="stylesheet"> | |
| <body> | |
| <header> | |
| <p>country ISO 3166-1 numeric code: <span id='info'></span></p> | |
| </header> | |
| <section id="vis"></section> | |
| <script src="http://d3js.org/d3.v3.min.js" charset="utf-8"></script> | |
| <script src="http://d3js.org/topojson.v1.min.js"></script> | |
| <script src="http://d3js.org/d3.geo.projection.v0.min.js" charset="utf-8"></script> | |
| <!-- d3 code --> | |
| <script src="script-compiled.js" charset="utf-8"></script> | |
| <script> | |
| d3.select(self.frameElement).style('height', '650px'); | |
| </script> |
| (function () { | |
| let width = 960, | |
| height = 600; | |
| let projection = d3.geo.kavrayskiy7().scale(180).translate([width / 2, height / 2]).precision(.1); | |
| let path = d3.geo.path().projection(projection); | |
| let svg = d3.select('#vis').append('svg').attr('width', width).attr('height', height); | |
| d3.json('world-110m.json', function (error, world) { | |
| if (error) throw error; | |
| svg.selectAll('circle').data(topojson.feature(world, world.objects.countries).features).enter().append('circle').on('mouseover', d => d3.select('#info').text(d.id)).attr('id', d => 'code-' + d.id).attr('transform', function (d) { | |
| return 'translate(' + path.centroid(d) + ')'; | |
| }).attr('r', function (d) { | |
| return Math.sqrt(path.area(d) / Math.PI); | |
| }); | |
| }); | |
| })(); |