Javascript 将路径转换添加到饼图

Javascript 将路径转换添加到饼图,javascript,d3.js,Javascript,D3.js,我正在用d3.js绘制一个饼图。我想在添加新数据时转换饼图切片。(我正在使用可重用的图表API)。我首先使用enter创建一个图表组,然后将图表弧路径附加到该组: 问题是,当新数据进入时,我需要能够转换路径(以及小提琴中显示的文本节点),但输入选择是在父组上进行的。如何添加一个转换(),使其应用于路径?您可以使用.select(),它将数据传播到所选元素。然后可以基于新数据应用转换。代码如下所示: var sel = svg.selectAll(".pie").data(pie(newData

我正在用
d3.js
绘制一个饼图。我想在添加新数据时转换饼图切片。(我正在使用可重用的图表API)。我首先使用enter创建一个图表组,然后将图表弧路径附加到该组:

问题是,当新数据进入时,我需要能够转换路径(以及小提琴中显示的文本节点),但输入选择是在父组上进行的。如何添加一个
转换()
,使其应用于路径?

您可以使用
.select()
,它将数据传播到所选元素。然后可以基于新数据应用转换。代码如下所示:

var sel = svg.selectAll(".pie").data(pie(newData));

// handle enter + exit selections

// update paths
sel.select("path")
   .transition()
   .attrTween("d", arcTween);

谢谢这似乎不像我预期的那样有效。当我尝试删除路径时,会出现一个错误“Uncaught TypeError:Object[Object Array]没有方法“exit”难道我无法删除路径吗?在使用
.data()
显式绑定数据之后,而不是在子选择之后,输入、更新和退出选择才可用。因此,您必须执行
sliceGroups.exit().select(…).remove()
,但在这种情况下,子选择实际上没有意义。如果你不删除整个组,更新时数据匹配就会混乱(匹配空组,不添加任何你希望添加的内容)。啊,是的,我明白了。退出子选择并不是我真正需要的。我需要转换子选项
var sel = svg.selectAll(".pie").data(pie(newData));

// handle enter + exit selections

// update paths
sel.select("path")
   .transition()
   .attrTween("d", arcTween);