2016-04-09 63 views

回答

1

當您返回arc(d)arcTween

function arcTween(transition, newAngle) { 
    transition.attrTween("name", function(d) { 

     var interpolate = d3.interpolate(d.endAngle, newAngle); 
     return function(t) { 
      d.endAngle = interpolate(t); 
      text.text(((d.endAngle/τ)*10).toFixed(1)); 
      return arc(d); 
     }; 
    }); 
} 

而應該被設置foreground.attr("d", arc)

function arcTween(transition, newAngle) { 
    transition.attrTween("name", function(d) { 

     var interpolate = d3.interpolate(d.endAngle, newAngle); 
     return function(t) { 
      d.endAngle = interpolate(t);     
      text.text(((d.endAngle/τ)*10).toFixed(1)); 
      foreground.attr("d", arc); 
     }; 
    }); 
} 
+1

謝謝MrHen! – RMC

+0

MrHen(希望你仍然能夠得到這個)當數據被過濾並且函數被再次調用以更新圖表時,我將如何讓它從最後的位置繪製而不是從0中繪製?例如,如果圖表在30時的新值爲70,那麼如何才能將前景從30增加到70而不是0到70? – RMC

+0

更新示例:http://jsbin.com/gatodekala/edit?html,js,output – RMC