Недостающая часть заключается в том, что вы можете предоставить функцию для .attr('cx', function (d,i) { ... })
при использовании перехода, а внутри этой функции вы можете получить доступ к атрибуту cx
, используя this.getAttribute('cx')
.
Конечно, вы такжехотите убедиться, что он превращен в число с помощью parseInt()
, в противном случае он будет выполнять конкатенацию строк (потому что JS, вздох).
Так что измените свою последнюю строку на:
circle.transition().duration(1000).attr('cx', function(d, i) {
return parseInt(this.getAttribute('cx')) + 100;
});