Spec-Zone.ru › D3.js 3

Макет связок

Справочник API ▸ Макеты ▸ Макет связок

Реализует алгоритм иерархического связывания рёбер Данни Холтена алгоритм. Для каждой входной связи вычисляется путь, проходящий через дерево, вверх по иерархии родителей до наименьшего общего предка, а затем вниз до целевого узла. Эту последовательность узлов можно использовать совместно с другими иерархическими макетами, такими как кластерный, для генерации связных сплайнов между узлами:

bundle

Например, рассмотрите эту визуализацию зависимостей программного обеспечения.

d3.layout.bundle()

Создаёт новый макет связок по умолчанию. В настоящее время макет связок является бессостоятельным и, следовательно, имеет только конфигурацию по умолчанию. Возвращаемый объект макета является одновременно объектом и функцией. То есть: вы можете вызвать макет как любую другую функцию, и макет имеет дополнительные методы, которые изменяют его поведение. Как и другие классы в D3, макеты следуют методу цепочки вызовов методов, где методы-установщики возвращают сам макет, что позволяет вызывать несколько установщиков в одном компактном операторе.

bundle(links)

Оценивает макет связок на указанном массиве связей, возвращая вычисленный путь от источника к цели через наименьшего общего предка. Каждая входная связь должна иметь два атрибута:

  • source - исходный узел.
  • target - целевой узел.

Кроме того, каждый узел должен иметь один атрибут:

  • parent - родительский узел.

Это подмножество полей, сгенерированных иерархическими макетами. Результат работы макета — массив путей, где каждый путь представляется массивом узлов. Таким образом, макет связок не вычисляет непосредственно базовые сплайны; вместо этого он возвращает массив узлов, которые неявно представляют точки управления сплайна. Вы можете использовать этот массив совместно с d3.svg.line или d3.svg.line.radial, чтобы сгенерировать сами сплайны. Например, если вы использовали кластер:

var cluster = d3.layout.cluster()
    .size([2 * Math.PI, 500]);

Подходящий генератор линий для иерархического связывания рёбер может быть таким:

var line = d3.svg.line.radial()
    .interpolate("bundle")
    .tension(.85)
    .radius(function(d) { return d.y; })
    .angle(function(d) { return d.x; });

Макет связок разработан для работы совместно с режимом интерполяции «связка» генератора линий, хотя технически вы можете использовать любой интерполятор или генератор форм. Параметр силы связки Холтена представлен как напряжение линии.

© 2010–2016 Michael Bostock
Licensed under the BSD License.
https://github.com/d3/d3-3.x-api-reference/blob/master/Bundle-Layout.md

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API