//Function to call when you mouseover a node
function mouseover(d) {
var el = d3.select(this)
.transition()
.duration(10)
.style("fill-opacity", 0.3);
}
//Mouseout function
function mouseout(d) {
var el = d3.select(this)
.transition()
.duration(500)
.style("fill-opacity", 1);
};
////////////////////////////////////////////////////////////////
var color = d3.scaleLinear()
.domain([0, 200000])
.range(["#FF9E97", "#115035"])
var panel = d3.select("#figure").append("svg")
.attr("width", "100%" )
.attr("height", "100%" )
.append("g")
// .attr("transform", "translate(30, 0)")
panel.append("rect")
.attr("width", "100%")
.attr("height", "100%")
.style('opacity', 0.7)
.style('fill', '#FF9E97');
////////////////////////////////////////////////////////////////
//The number of columns and rows of the heatmap
var radius = 15;
var MapColumns = width / radius;
var MapRows = height / radius;
var hexbin = d3.hexbin().radius(radius);
var points = [];
for (var i = 0; i < MapRows; i++) {
for (var j = 0; j < MapColumns; j++) {
points.push([radius * j * 1.75, radius * i * 1.5]);
}//for j
}//for i
panel.selectAll(".hex")
.data(points)
.enter().append("clipPath")
.attr("id", "clip")
.append("rect")
.attr("class", "mesh")
.attr("width", width)
.attr("height", height);
panel.append("g")
.attr("clip-path", "url(#clip)")
.selectAll(".hexagon")
.data(hexbin(points))
.enter().append("path")
.attr("class", "hexagon")
.attr("d", hexbin.hexagon())
.attr("transform", function (d) {
return "translate(" + d.x + "," + d.y + ")";
})
.style("fill", function (d, i) { return color(d.y * d.x); })
.on("mouseover", mouseover)
.on("mouseout", mouseout);
panel.append("rect")
.attr("width", width)
.attr("height", height)
.style("stroke", "black")
.style('fill', 'none');