#layout #d3.js #force-layout #circle-pack
#макет #d3.js #принудительная компоновка #круг-упаковка
Вопрос:
У меня есть график, представленный стандартным макетом force.
Узлы могут быть сгруппированы по атрибутам.
Могу ли я представить эти кластеры с помощью макета pack?
Как будут сосуществовать 2 макета и как будут вычисляться координаты x и y моих узлов?
Редактировать
Я думаю, мне, возможно, придется обработать мои данные, чтобы превратить кластеры узлов в отдельные узлы, содержащие иерархию кластеров в качестве атрибута. Я бы все равно приветствовал альтернативный способ, который не заставляет меня изменять мои данные, если это возможно.
Вот пример набора данных, который я преобразовал, чтобы соответствовать подходу с несколькими макетами. Проблема здесь в том, что я не могу связать ни один из узлов внутри кластера.
{
"directed": true,
"graph": [],
"nodes": [
{
"id": "node0"
},
{
"id": "node1"
},
{
"id": "node2",
"tree": {
"name": "cluster",
"children": [
{
"id": "node3"
},
{
"id": "node4"
},
{
"id": "node5"
}
]
}
}
],
"links": [
{
"source": 0,
"target": 1
},
{
"source": 1,
"target": 2
},
{
"source": 0,
"target": 2
}
],
"multigraph": false
}
Комментарии:
1. Эти два макета могут сосуществовать. Идея заключается в том, что у вас есть
g
элементы для узлов в макете force. Для всего, что находится внутри, координаты / размеры задаются макетом пакета.2. Можете ли вы прикрепить пример ваших данных, которые являются макетом force?
3. Рено, вот простой пример, который помещает макет силы внутри каждого узла внешнего макета силы. Он использует метод, описанный Ларсом. Вы можете использовать это в качестве модели, но вместо макета inner force используйте макет pack. (У меня также есть пример, в котором используется макет pack внутри каждого узла макета force, но сейчас его нет в Интернете. Это немного запутанно для размещения в jsfiddle, и вам пришлось бы пробираться через много ненужного кода — написанного, когда я был еще большим новичком, чем сейчас. Однако, если вам действительно нужно это увидеть, я могу опубликовать это где-нибудь.)
4. Привет, Марс @renaud, я тоже застрял в подобном случае, подобном вашему. Можете ли вы, ребята, помочь мне, как действовать дальше? Было бы здорово, если бы вы могли поделиться своим кодом.