{
const svg = d3.create("svg")
.attr('viewBox', [0, 0, width, height]);
const circles = svg.selectAll('circle')
.data(data)
.enter()
.append('circle')
.attr('cx', d => +d.position)
.attr('cy', d => d.controversy)
.attr('r', radius)
.attr('fill', 'steelblue');
const labels = svg.selectAll('text')
.data(data)
.enter()
.append('text')
.text(d => d.Topics)
.attr('x', d => +d.position)
.attr('y', d => d.y - radius - 5)
.attr('text-anchor', 'middle')
.attr('font-size', '12px')
.attr('fill', 'black');
const simulation = d3.forceSimulation(data)
.force('x', d3.forceX(d => xScale(+d.position)).strength(1))
.force('y', d3.forceY(d => yScale(d.controversy)).strength(1))
.force('collide', d3.forceCollide(radius))
.stop();
for (let i = 0; i < 100; i++) {
simulation.tick();
}
return svg.node();
}