{
const svg = d3
.create("svg")
.attr("viewBox", [0, 0, width, height])
.style("overflow", "visible");
svg
.append("g")
.selectAll("circle")
.data(data)
.enter()
.append("circle")
.attr(
"transform",
(d, i) =>
`translate(${xOffset + i * xFactor},${height / 1.5 - i * yFactor})`
)
.attr("fill", (d) => color(rScale(d)))
.attr("stroke-width", 1)
.attr("stroke", "black")
.attr("cx", 0)
.attr("cy", 0)
.attr("r", (d) => rScale(d))
.lower()
.transition()
.duration(2000)
.attr("r", 8)
.transition()
.delay((d, i) => i * 10)
.duration(4000)
.attr("r", (d) => rScale(d));
svg.append("g").call(xAxis).lower();
return svg.node();
}