D3
OG
Old school D3 from simpler times
All examples
By author
By category
About
AnaMal08
Full window
Github gist
final exam 05/18/17
<!DOCTYPE html> <meta charset='utf-8'> <title>NY Counties</title> <style> body { margin: 0; background-color: blue; } .info { position: absolute; top: 50px; left: 50px; } </style> <div class="info"></div> <svg width="960" height="500" stroke="#000" stroke-linejoin="round" stroke-linecap="round"> <defs> <filter id="blur"> <feGaussianBlur stdDeviation="5"></feGaussianBlur> </filter> </defs> </svg> <script src="https://d3js.org/d3.v4.min.js"></script> <script src="https://unpkg.com/topojson-client@3"></script> <script> // This demo modified slightly from https://bl.ocks.org/mbostock/4108203 var svg = d3.select("svg"); var defs = svg.select("defs"); // New York central state plane, EPSG: 2829 // (central meridian = - 76.5833..., latitute of origin = 40) var projection = d3.geoConicConformal() .rotate([120 + 30 / 60, -36 - 30 / 60]); var path = d3.geoPath() .projection(projection); // Load the topojson and the population data d3.queue() .defer(d3.json,"counties.json") .defer(d3.json, "https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/all_week.geojson") .await(ready); // Wait for the data to arrive, then begin processing function ready(error, us, population) { if (error) throw error; // Make the population data easy to query by FIPS code // Convert the topojson to an array of GeoJSON counties var counties = topojson.feature(us, us.objects.counties); // Get NY counties as array of GeoJSON features var newyork = counties.features.filter(function(d) { return d.properties.STATEFP === '06' }) // Inspect the data in the developer console console.log('here is the population data:', population[0], population[1]); console.log('here is one of the counties:', newyork[0]); projection.fitExtent([[10,10],[960 - 20, 500 - 20]], { type: "FeatureCollection", features: newyork }); // Plot the boundary of the US svg.append("path") .attr("id", "nation") .attr("fill", "green") .attr("d", path(topojson.merge(us, us.objects.counties.geometries))) .attr("stroke-width", 2) // Drop-shadow styling (this is blurred shadow) svg.append("use") .attr("xlink:href", "#nation") .attr("fill-opacity", 0.2) .attr("filter", "url(#blur)"); // Drop-shadow styling (this is white overlay) svg.append("use") .attr("xlink:href", "#nation") .attr("fill", "#fff"); // Plot the state boundaries svg.append("path") .attr("stroke-width", 1) .attr("fill", "none") .attr("d", path(topojson.mesh(us, us.objects.counties, function(a, b) { return a.properties.STATEFP !== b.properties.STATEFP; }))); // projection returns null for [lon, lat] that won't appear in the viewport function inRange(d) { return projection(d.geometry.coordinates) !== null; } // Plot the individual counties svg.selectAll('path.county') .data( population.features ) .enter().append("path") .attr("d", path) .attr("class", "county") .attr("fill", "#f900b3") .attr("stroke", "#aaa") .attr("stroke-width", 0.5) .on('mouseover', function(d, i) { console.log('mouseover:', i, d); d3.select(this).attr('fill', 'yellow'); d3.select(".info").html("mag"+ " " + d.properties.mag + "</br>" + d.properties.place) }) .on('mouseout', function(d) { d3.select(this).attr('fill', '#f900b3'); d3.select(".info").html("") }); } </script>
https://d3js.org/d3.v4.min.js
https://unpkg.com/topojson-client@3