{
const data = [
{ type: "Travail standard", valeur: 123456 },
{ type: "Télétravail", valeur: 4321 }
];
const width = 500;
const height = 500;
const radius = Math.min(width, height) / 2;
const color = d3.scaleOrdinal()
.domain(data.map(d => d.type))
.range(["#1f77b4", "#ff7f0e"]);
const svg = d3.select("#pie")
.attr("viewBox", [0, 0, width, height]);
const pie = d3.pie().value(d => d.valeur);
const arc = d3.arc().innerRadius(0).outerRadius(radius - 10);
const label = d3.arc().innerRadius(radius / 1.5).outerRadius(radius / 1.5);
const g = svg.append("g")
.attr("transform", `translate(${width / 2},${height / 2})`);
const arcs = pie(data);
g.selectAll("path")
.data(arcs)
.join("path")
.attr("fill", d => color(d.data.type))
.attr("d", arc)
.append("title")
.text(d => `${d.data.type} : ${(d.data.valeur / d3.sum(data, d => d.valeur) * 100).toFixed(1)} %`);
g.selectAll("text")
.data(arcs)
.join("text")
.attr("transform", d => `translate(${label.centroid(d)})`)
.attr("text-anchor", "middle")
.attr("font-size", 16)
.attr("fill", d => d.data.type === "Travail standard" ? "white" : "black")
.text(d => `${(d.data.valeur / d3.sum(data, d => d.valeur) * 100).toFixed(1)}%`);
}