Масштабируемая круговая упаковка - переход между двумя наборами - заметная записная книжка - PullRequest
0 голосов
/ 06 марта 2020

Я изменил записную книжку 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; });
};

Эта функция взята из аналогичный вопрос , но в моем случае ответ кажется не очень хорошим.

...