Я пытаюсь решить, как обновить некоторые элементы D3.js, просто привязывая новые данные. Я не уверен, возможно ли это или нет, но похоже, что это должно быть.
Итак, сначала я создал четыре круга SVG и установил смещение cx
как функцию данных:
<body><div id="container"></div></body>
var svg = d3.select("div.container").append("svg")
.attr("class", "chart")
.attr("width", 1000)
.attr("height", 500);
// Create initial data and display
var data = [0, 10, 20, 30];
var circle = svg.selectAll("circle")
.data(data)
.enter()
.append('circle')
.attr("cx", function(d) {
return d*10;
})
.attr("cy", 100)
.attr("r", 10)
.style("fill", "steelblue");
Далее я добавляю новые данные и переход. Я бы ожидал увидеть, что круги медленно перемещаются к новой позиции (чего я пытаюсь достичь), но они этого не делают:
var data1 = [40, 50, 60, 70];
circle.data(data1).transition().duration(2500);
Я делаю базовую ошибку? Возможно, у меня неправильный выбор. Или просто невозможно обновить элементы только путем манипулирования данными?
UPDATE: если я делаю console.log(circle)
, тогда я вижу массив элементов окружения SVG, чего я ожидаю.