如何在d3.js中更新多个图表?

如何在d3.js中更新多个图表?,d3.js,D3.js,我研究d3.js已经一个多星期了,但有一件事我被卡住了。 根据以下内容,我创建了一个甜甜圈图表: http://jsfiddle.net/MX7JC/9/ 此圆环图具有updae功能,该功能使用“arcTween”更新图表: function arcTween(a) { var i = d3.interpolate(this._current, a); this._current = i(0); return function(t) { return arc(i(t)); }; }

我研究d3.js已经一个多星期了,但有一件事我被卡住了。 根据以下内容,我创建了一个甜甜圈图表:

http://jsfiddle.net/MX7JC/9/
此圆环图具有updae功能,该功能使用“arcTween”更新图表:

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

在这个“arcTween”函数中,它使用arc函数。 因为它是一个甜甜圈图表,它是全球宣布。 因为我在页面上使用了多个图表。 我想知道怎么做。 我已经尝试在数组中创建这个“弧”,但不知怎么的,它不起作用


如果有其他方法可以实现这一点,我很乐意知道。

以下是拉尔斯在咖啡脚本中的评论
getTween返回具有唯一弧的tween函数

# Arc function
arc = (r) -> 
  return d3.svg.arc().innerRadius(r*0.8).outerRadius(r)

# Closure for tween
getTween = (arc) ->
  tween  = (b) ->
    previous = if @previous? then @previous else 0
    i = d3.interpolate {amount: previous}, b
    @previous = b.data.amount
    return (t) -> arc i(t)

# Get tween function
tween = getTween arc(60)

# ENTER
pie.enter().append("svg:path")
   .attr("fill", core.getColor())
.transition()
   .ease("elastic")
   .duration(750)
   .attrTween("d",tween)

您是否尝试过将
arc
函数作为参数传递?这很棘手,因为对arcTween的调用是通过:.attrTween(“d”,arcTween)进行的,并且在某种程度上,“arcTween”是通过一个名为“a”的参数读取的,该参数包含endAngle、startAngle、数据和值。所以:1。我不知道这些数据来自哪里,因为没有发送参数。2.如果我试图传递这样一个参数:.attrTween(“d”,arcTween(parameter))-那么它会破坏pramater“a”。啊!