つまり、空白の画面から始めて、チャートが-90度(または270度)で描画を開始し、90度に達するまで半円を実行します。コードは次のようになります。
var width = 800;
var height = 400;
var radius = 300;
var grad=Math.PI/180;
var data = [30, 14, 4, 4, 5];
var color = d3.scale.category20();
var svg = d3.select("body").append("svg").attr("width", width).attr("height",
`height).append("g").attr("transform", "translate(" + radius*1.5 + "," + radius*1.5 +
")");
var arc = d3.svg.arc().innerRadius(radius - 100).outerRadius(radius - 20);
var pie = d3.layout.pie().sort(null);
svg.selectAll("path").data(pie(data)).enter().append("path").attr("d",
arc).attr("fill",
function(d, i) { return color(i); }).transition().duration(500).attrTween("d", sweep);
function sweep(a) {
var i = d3.interpolate({startAngle: -90*grad, endAngle: -90*grad},{startAngle: -90*grad, endAngle: 90*grad});
return function(t) {
return arc(i(t));
};
}
いくつかの例を見ると、アニメーションを取得できましたが、データをアークにバインド (または変換) できませんでした。私の感じでは、パスが 1 つしか描かれておらず、その後停止します。
補間を開始/終了 -90/90 および a に変更すると、色は異なりますが、すべてではありません。パイバーに開始/終了角度を追加すると、最初に単色の弧が表示され、次に他の部分がスライドする遷移が得られます(最初に弧がなかった場合は正しいでしょう-比率も少し間違っているようです)。最初の色を白に設定しても、すべてが白のままになるため、役に立ちません。
明らかな点が欠けているのではないかと心配していますが、これまでのところ行き詰まっています。誰かが私を正しい方向に向けることができるかもしれません。