D3.js甜甜圈图表。。。弧。质心(d)不受d.内半径和d.外半径的影响

D3.js甜甜圈图表。。。弧。质心(d)不受d.内半径和d.外半径的影响,d3.js,pie-chart,donut-chart,D3.js,Pie Chart,Donut Chart,我正在创建一个油炸圈饼(或饼图),我想把标签放在区域外。 我为它编了一把小提琴 弧。质心(d)->总是给出相同的结果(因此也是相同的平移)不确定它总是给出相同的结果是什么意思,但是您可以将质心坐标乘以1.5,将标签放在图表的正外部。代码是这样的 .attr("transform", function(d) { var c = arc.centroid(d); return "translate(" + c[0]*1.5 +"," + c[1]*1.5 + ")";

我正在创建一个油炸圈饼(或饼图),我想把标签放在区域外。 我为它编了一把小提琴


弧。质心(d)->总是给出相同的结果(因此也是相同的平移)

不确定它总是给出相同的结果是什么意思,但是您可以将质心坐标乘以1.5,将标签放在图表的正外部。代码是这样的

.attr("transform", function(d) {
        var c = arc.centroid(d);
        return "translate(" + c[0]*1.5 +"," + c[1]*1.5 + ")";
    })

更新了JSFIDLE。

您好,谢谢您的回复。。。但是你知道为什么设置d.innerRadius=radius;d、 外层=高度/2;在所有示例中(在调用arc.centroid(d)之前)将使arc.centroid偏移?设置这些值对我没有任何影响。请检查此。attr(“transform”,函数(d){//将标签的原点设置为弧的中心//我们必须确保在调用arc.centroid d.outerRadius=outerRadius+50;//设置外部坐标d.innerRadius=outerRadius+45;//设置内部坐标返回“translate”(+arc.centroid(d)+”);})您在
弧的定义中明确设置了内半径和外半径,因此在该函数中所做的更改没有任何效果。
.attr("transform", function(d) {
        var c = arc.centroid(d);
        return "translate(" + c[0]*1.5 +"," + c[1]*1.5 + ")";
    })