饼图上的转换在d3.js中调整大小

eme*_*pyc 2 javascript svg transition d3.js pie-chart

我正在寻找一个关于如何为饼图调整大小(弧的路径)进行转换的示例.我一直在看这个例子,但我仍然不知道如何修改它以在调整大小上进行转换.到目前为止,我可以通过更改arc对象的outerRadius(和innerRadius)来调整饼图的大小,但是转换没有运气.这是我正在研究的例子.

arc.innerRadius(newInnerRad)
   .outerRadius(newOuterRad);

path.transition().duration(500).attrTween("d", arcTween);

function arcTween(a) {
  var i = d3.interpolate(this._current, a);
  this._current = i(0);
  return function(t) {
    return arc(i(t));
  };
}
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

Lar*_*off 8

如果您创建arcTween内联并为半径添加插值器,则它可以工作- 请参阅更新的小提琴.

  • 补间函数需要内联创建以反映半径的变化值 - 如果您像以前一样创建它,它只会在开始时获得一次半径.您现在不是一次定义`arcTween`,而是一次又一次地定义它,每次更新一次.这不是执行此操作的唯一方法 - 您可以使用数据(类似于角度)保存半径值,然后从补间函数中获取值.我更喜欢这种方式,因为我觉得它更容易理解. (2认同)