Я изменил записную книжку Observable, чтобы можно было переключаться между двумя наборами данных. Блокнот доступен здесь .
Выбранные данные возвращаются с помощью переключателя + регистрационная функция.
Я бы хотел, чтобы круг плавно переходил при выборе другого набора данных.
Мои попытки создать функцию обновления, которая связывала бы данные вместе, были безуспешными. Я пытался воссоздать эту функцию
function updateVis() {
if (dataSource == 0)
pack.value(function(d) { return d.size; });
if (dataSource == 1)
pack.value(function(d) { return 100; });
if (dataSource == 2)
pack.value(function(d) { return 1 +
Math.floor(Math.random()*301); });
var data1 = pack.nodes(data);
titles.attr("x", function(d) { return d.x; })
.attr("y", function(d) { return d.y; })
.text(function(d) { return d.name +
(d.children ? "" : ": " + format(d.value)); });
circles.transition()
.duration(5000)
.attr("cx", function(d) { return d.x; })
.attr("cy", function(d) { return d.y; })
.attr("r", function(d) { return d.r; });
};
Эта функция взята из аналогичный вопрос , но в моем случае ответ кажется не очень хорошим.