2013-05-12 54 views
0

即時研究d3.js已經一個多星期了,我被困在了一件事上。 我創建了一個圓環圖,accroding這樣:如何更新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「函數,它使用弧函數。因爲它有1個甜甜圈圖,因此被全球宣佈。 因爲即時通訊在頁面上使用多個圖表。 我想知道如何做到這一點。 我已經嘗試在數組中創建這個「弧」,但它以某種方式不起作用。

如果有其他方法可以實現這一點,我會很高興知道。

+0

您是否嘗試過在'arc'函數作爲參數傳遞返回吐溫功能? – 2013-05-12 12:45:48

+0

由於對arcTween的調用是通過:.attrTween(「d」,arcTween)進行的,在某種程度上,使用名爲「a」的參數來讀取「arcTween」,該參數具有endAngle,startAngle,Data和Value。所以:1.我不知道這個數據來自哪裏,因爲沒有參數發送。 2.如果我試圖傳遞一個像這樣的參數:.attrTween(「d」,arcTween(參數)) - 那麼它打破了pramater「a」。 ough! – Yaniv 2013-05-13 10:54:01

回答

0

這裏是咖啡腳本
getTween拉爾斯評論具有獨特的弧形

# 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)