9951 explained code solutions for 126 technologies


javascript-d3How do I create a map using d3.js?


To create a map using d3.js, a geographic projection is needed to translate the spherical coordinates of the earth into a two dimensional plane. To do this, you can use the d3.geo library.

// Create an Albers projection
var projection = d3.geoAlbers()
    .center([0, 55.4])
    .rotate([4.4, 0])
    .scale(1200 * 5)
    .translate([width / 2, height / 2]);

The code above creates an Albers projection with a center point at [0, 55.4], a rotation of 4.4 degrees, a scale of 1200 multiplied by 5, and a translation of the width and height divided by 2.

Once the projection is created, you can use the d3.geoPath function to generate a path from the projected coordinates.

// Create a path using the projection
var path = d3.geoPath()
    .projection(projection);

The code above creates a path from the projection that can be used to draw the map.

Finally, you can use the d3.json function to load the geographic data and the d3.select function to draw the map on an SVG element.

// Load the geographic data
d3.json("data/countries.geo.json", function(error, data) {
  // Draw the map
  d3.select("#map")
    .selectAll("path")
    .data(data.features)
    .enter()
    .append("path")
    .attr("d", path);
});

The code above loads the geographic data from a JSON file and draws the map on an SVG element with an id of "map".

Helpful links

Edit this code on GitHub