Skip to content

Instantly share code, notes, and snippets.

@allardw
Last active June 28, 2016 14:08
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 allardw/9cb188f5bb09824492084cc46e0faafd to your computer and use it in GitHub Desktop.
Save allardw/9cb188f5bb09824492084cc46e0faafd to your computer and use it in GitHub Desktop.
Voroni & Chromatic Scale

Creates a d3-voronoi diagram for a couple of random coordinates. The color of the polygons is defined by a continuous color scheme based on ColorBrewer using d3-scale-chromatic.

Example in D3 v4.0

<script src="https://d3js.org/d3.v4.0.0-rc.2.min.js"></script>
<script src="https://d3js.org/d3-color.v0.5.min.js"></script>
<script src="https://d3js.org/d3-interpolate.v0.9.min.js"></script>
<script src="https://d3js.org/d3-scale-chromatic.v0.3.min.js"></script>
<div id="viz"></div>
<script>
var width = 960,
height = 500;
var svg = d3.select('#viz').append('svg')
.attr('width',width)
.attr('height',height);
var n = 2000;
var data = d3.range(n).map(function() { return d3.range(2).map(Math.random) });
var voronoi = d3.voronoi()
.x(function(d) {return d[0]*width})
.y(function(d) {return d[1]*height})
.size([width, height]);
var pointareas = svg.selectAll('areas')
.data(voronoi.polygons(data))
.enter().append('path')
.attr('d', function(d) { return "M" + d.join("L") + "Z"; })
.style('fill', function(d) {
return d3.interpolateRdYlBu(d.data[0])});
pointareas.on("mouseover", function(d,i ) {
pointareas
.style('fill', function(p) {
dist = Math.sqrt(Math.pow((d.data[0] - p.data [0]),2) + Math.pow((d.data[1] - p.data [1]),2))
return d3.interpolateRdYlBu(dist)
});
})
</script>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment