Tarte (donut) graphique segment de l'ordre dans D3

J'ai un donut graphique construit à l'aide de d3 avec un curseur jQuery qui permet à l'utilisateur de choisir entre les différents points de mesure. Le graphique anime la transition entre les valeurs de données et tout est bien.

Le problème: Les segments de toujours rendre dans le sens anti-horaire ordre de taille (du plus grand au plus petit). Cela signifie que les segments de changer leur position autour du graphique en fonction de leur taille.

Ce comportement est source de confusion pour les utilisateurs, mais malheureusement je ne peux pas savoir comment le changer. Je voudrais que les segments de rester dans leur position initiale.

De travail js-violon: http://jsfiddle.net/kerplunk/Q3dhh/

Je crois que le problème doit se situer dans la fonction de l'interpolation:

//Interpolate the arcs in data space.
function pieTween(d, i) {
  var s0;
  var e0;
  if(oldPieData[i]){
    s0 = oldPieData[i].startAngle;
    e0 = oldPieData[i].endAngle;
  } else if (!(oldPieData[i]) && oldPieData[i-1]) {
    s0 = oldPieData[i-1].endAngle;
    e0 = oldPieData[i-1].endAngle;
  } else if(!(oldPieData[i-1]) && oldPieData.length > 0){
    s0 = oldPieData[oldPieData.length-1].endAngle;
    e0 = oldPieData[oldPieData.length-1].endAngle;
  } else {
    s0 = 0;
    e0 = 0;
  }
  var i = d3.interpolate({startAngle: s0, endAngle: e0}, {startAngle: d.startAngle, endAngle: d.endAngle});
  return function(t) {
    var b = i(t);
    return arc(b);
  };
}

OriginalL'auteur Kerplunk | 2013-06-18