anchor.diff:        .text(percent(d));
   
       svg.select(".slices").selectAll("path.slice")
  -      .transition().duration(150).attrTween("transform", function(d, i, a) {
  +      .transition().duration(500).ease("elastic").attrTween("transform", function(d, i, a) {
           return d3.interpolateString(a, 'scale(1)');
         });
   
       d3.select(this)
  -      .transition().duration(150).attrTween("transform", function(d, i, a) {
  +      .transition().duration(500).ease("elastic").attrTween("transform", function(d, i, a) {
           return d3.interpolateString(a, 'scale(1.1)');
         });
     }
  
positive.code:   polyline.enter()
      .append("polyline");
  
    polyline.transition().duration(1000)
      .attrTween("points", function(d){
        this._current = this._current || d;
        var interpolate = d3.interpolate(this._current, d);
  
negative.code:     .append("title")
        .text(function(d) { return d.data.category + " - $" + d.data.amount; });
  
    slice.transition().duration(500)
      .attrTween("d", function(d) {
        this._current = this._current || d;
        var interpolate = d3.interpolate(this._current, d);
  