grid = g => g
.attr("stroke", "currentColor")
.attr("stroke-opacity", 0.1)
.call(g => g.append("g")
.selectAll("line")
.data(scatterplot_x.ticks())
.join("line")
.attr("x1", d => 0.5 + scatterplot_x(d))
.attr("x2", d => 0.5 + scatterplot_x(d))
.attr("y1", scatterplot_margin.top)
.attr("y2", scatterplot_dimensions.height - scatterplot_margin.bottom))
.call(g => g.append("g")
.selectAll("line")
.data(scatterplot_y.ticks())
.join("line")
.attr("y1", d => 0.5 + scatterplot_y(d))
.attr("y2", d => 0.5 + scatterplot_y(d))
.attr("x1", scatterplot_margin.left)
.attr("x2", scatterplot_dimensions.width - scatterplot_margin.right));