0

2 つの異なるデータ セットがあり、最初のセットで円グラフを作成し、イベントをリッスンして 2 番目のセットに移行しようとしています。

このコードを使用して、最初のデータ セットから円グラフを正常に作成できます。

var data = [[70, 30],[60, 40],[50, 50],[95, 5],[87, 13]];

progress.pie.vars.svg = d3.select( progress.pie.vars.pieEl ).selectAll("svg")
          .data(data)
          .enter()
          .append("svg")
            .attr("width", 150)
            .attr("height", 150)
          .each(function(d) { this.currentAngles = d; }); // store the initial angles;

progress.pie.vars.path = progress.pie.vars.svg.selectAll("path")
          .data(function(d, i){ return pie(d) })
          .enter().append("path")
            .attr("fill", function(d, i) { return color(i); })
            .attr("transform", "translate(" + 75 + ", " + 75 + ")")
            .attr("d", arc);

注:ここではハードコードされたデータを使用しています。JSON を使用してレプリケートできますが、トランジションを機能させるために単純化したかったのです。

これによりsvgが作成され、ページにレンダリングされますが、他のデータセットを使用してパスを更新しようとすると問題が発生します。このような...

var data = [[60, 40], [10, 10, 10, 70], [30, 70], [25, 25, 25, 25], [30, 35, 35]];

progress.pie.vars.svg = progress.pie.vars.svg.selectAll("svg")
          .data(data);

progress.pie.vars.path = progress.pie.vars.path
          .data(function(d, i){ return pie(d) })
          .enter().append("path")
            .transition()
            .duration(5000);

d3 の一般的な更新パターンを調査しましたが、まだよくわかりません。

誰かが私の問題を解決する方法やコードを改善する方法を提案している場合は、大歓迎です:)

ありがとう

4

1 に答える 1