{
const svg = d3.create("svg")
.attr("width", width)
.attr("height", height)
const g = svg.append("g")
g.attr("transform", `translate(${width/2}, ${height/2})`);
d3.range(rings).forEach((ring,index) => {
const numberCircles = outerCircles - 7 * index
const angle = Math.PI / numberCircles
const packR = radius / Math.sin(angle)
const xRadial = d3.scaleLinear()
.domain([0, numberCircles])
.range([0, 2 * Math.PI])
g.append('g').selectAll("circle")
.data(d3.range(numberCircles))
.join("circle")
.attr("cx", (d,i) => d3.pointRadial(xRadial(i), packR)[0])
.attr("cy", (d,i) => d3.pointRadial(xRadial(i), packR)[1])
.attr("r", radius-5)
.attr("fill", (d,i) => xRadial(i)>Math.PI/2 ? 'black': 'gray')
})
return svg.node()
}