svg = {
let svg_width = width;
let svg_height = 0.4 * svg_width;
let svg = d3
.create('svg')
.attr('width', svg_width)
.attr('height', svg_height);
let x_scale = d3
.scaleLinear()
.domain([bounds.xmin, bounds.xmax])
.range([0, svg_width]);
let y_scale = d3
.scaleLinear()
.domain([bounds.ymin, bounds.ymax])
.range([svg_height, 0]);
let pts_to_path = d3
.line()
.x(function(d) {
return x_scale(d[0]);
})
.y(function(d) {
return y_scale(d[1]);
});
let triangles = triangulated_counties
.map(c => extract_geometry(c, 'triangle'))
.flat(1);
svg
.selectAll('path.tri')
.data(triangles)
.enter()
.append("path")
.attr('class', 'tri')
.attr('d', function(d) {
return pts_to_path(d);
})
.attr("stroke", "black")
.attr("stroke-width", .1)
.attr('fill', 'white');
let segments = triangulated_counties
.map(c => extract_geometry(c, 'segment'))
.flat(1);
svg
.selectAll('path.seg')
.data(segments)
.enter()
.append("path")
.attr('class', 'seg')
.attr('d', function(d) {
console.log(['seg', d]);
return pts_to_path(d);
})
.attr("stroke", "black")
.attr("stroke-width", 2)
.attr('fill', 'white');
return svg.node();
}