chart = {
const root = partition(data);
const svg = d3.select(DOM.svg(width, width))
.style("width", "100%")
.style("height", "auto")
.style("padding", "10px")
.style("font", "10px sans-serif")
.style("box-sizing", "border-box");
svg.append("g")
.selectAll("path")
.data(root.descendants().filter(d => d.depth))
.enter().append("path")
.attr("fill", d => color(d.data.data.polarite))
.attr("d", arc)
.append("title")
.text(d => `${d.ancestors().map(d => d.data.data.name).reverse().join("/")}•${format(d.data.data.value)}•${format(d.data.data.polarite)}`);
svg.append("g")
.attr("pointer-events", "none")
.attr("text-anchor", "middle")
.selectAll("text")
.data(root.descendants().filter(d => d.depth && (d.y0 + d.y1) / 2 * (d.x1 - d.x0) > 10))
.enter().append("text")
.attr("transform", function(d) {
const x = (d.x0 + d.x1) / 2 * 180 / Math.PI;
const y = (d.y0 + d.y1) / 2;
return `rotate(${x - 90}) translate(${y},0) rotate(${x < 180 ? 0 : 180})`;
})
.attr("dy", "0.35em")
.text(d => d.data.data.name);
return autosize(svg.node());
}