D3 извлекает и добавляет к текущему значению атрибута выбора

Я пытаюсь получить значения для перевода элемента.

Например, если я выбираю ось x:

d3.select('.x.axis').attr("transform")

то я получаю

"translate(0,112)"

Как мне получить 0 и 112 без разбора регулярного выражения?

Я пытаюсь сделать это, чтобы добавить значение. В псевдокоде:

d3.selectAll('.x.axis').attr('transform', 'translate('
        .attr('transform').match(/(\d+)(\.\d+)?/g)[0] // <-- clearly won't work
        + additional_value
        + ', 0)');

Ответы

Ответ 1

D3 предоставляет transform() функцию именно для этой цели:

var t = d3.transform(d3.select('.x.axis').attr("transform")),
    x = t.translate[0],
    y = t.translate[1];

Ответ 2

если вы хотите использовать selectAll, вы можете попробовать что-то вроде этого:

// move ticks to the center of the x-axis   
var transform;
d3.selectAll('.tick').attr('transform', function(){
  transform = d3.transform(d3.select(this).attr("transform"));
  return "translate("+transform.translate[0]+", -3)";
});