Масштабный коэффициент доступа в макете пакета d3

#javascript #d3.js #circle-pack

#javascript #d3.js #circle-pack

Вопрос:

Я использую макет пакета d3 с функцией radius по умолчанию. Это масштабирует размер кругов так, чтобы все помещалось в контейнер.

Как я могу получить доступ к этому масштабному коэффициенту?

Комментарии:

1. API не предоставляет это, поэтому вам придется изменить исходный код.

2. :-(. Поиграв немного дольше, похоже, что коэффициент даже не является константой, т. Е. d.value/d.r Не Является постоянным.

3. Ах, потому что он использует Math.sqrt по умолчанию…

Ответ №1:

Этот код отобразит масштабный коэффициент во всплывающей подсказке узла:

 titles
    .attr("x", function(d) { return d.x; })
    .attr("y", function(d) { return d.y; })
    .text(function(d) {
        return (    "Scale factor  : "   ( d.value)/(d.r*d.r)   "n"  
                    "Value: "    d.value   "n"  
                    "R: "    d.r); 
    });
 

как в этом тестовом примере jsfiddle.

Похоже, что коэффициент масштабирования более или менее одинаков для всех конечных узлов в пакете circle, как показано на следующих двух рисунках:

введите описание изображения здесь

введите описание изображения здесь

Однако он может отличаться для всех других узлов!