chart_force = {
replay;
const svg = d3.select(DOM.svg(chart_param.width, chart_param.height)),
nodes1 = nodes.map(d => Object.create(d));
const sim = d3.forceSimulation(nodes1)
.force("x", d3.forceX(x(0.5)))
.force("y", d3.forceY(y(0.5)))
.force("collide", d3.forceCollide().radius(d => d.r + 1));
const node = draw_nodes(svg, nodes1);
node.transition()
.delay((d, i) => Math.random() * 500)
.duration(750)
.attrTween("r", d => {
const i = d3.interpolate(0, d.r);
return t => d.r = i(t);
});
sim.on("tick", () => {
node
.attr("cx", d => d.x)
.attr("cy", d => d.y);
});
return svg.node()
}