xAxis = (g) =>
g.attr("text-anchor", "middle").call((g) =>
g
.selectAll("g")
.data(data)
.enter()
.append("g")
.attr(
"transform",
(d) => `
rotate(${((x(d.State) + x.bandwidth() / 2) * 180) / Math.PI - 90})
translate(${innerRadius},0)
`
)
.call((g) => g.append("line").attr("x2", -5).attr("stroke", "#000"))
.call((g) =>
g
.append("text")
.attr("transform", (d) =>
(x(d.State) + x.bandwidth() / 2 + Math.PI / 2) % (2 * Math.PI) <
Math.PI
? "rotate(90) translate(0,16)"
: "rotate(-90) translate(0,-9)"
)
.text((d) => d.State)
)
)