function scatterUpdate(data, {
width = 640,
height = 400,
margin = 20,
x = (d) => d.bill_length_mm,
y = (d) => d.bill_depth_mm,
} = {}) {
const xScale = d3.scaleLinear()
.domain(d3.extent(data, x))
.range([margin, width - margin])
const yScale = d3.scaleLinear()
.domain(d3.extent(data, y))
.range([height - margin, margin])
var svg = d3.create("svg")
.attr("width", width)
.attr("height", height)
svg.selectAll("circle")
.data(data)
.join("circle")
.attr("cx", d => xScale(x(d)))
.attr("cy", d => yScale(y(d)))
.attr("r", 5)
let domElement = svg.node()
domElement.update = function(updateY) {
y = updateY
yScale.domain(d3.extent(data, y))
svg.selectAll("circle")
.data(data)
.join("circle")
.transition()
.attr("cx", d => xScale(x(d)))
.attr("cy", d => yScale(y(d)))
.attr("r", 5)
}
return domElement
}