2015-08-17 7 views
2

Я новичок в Cytoscape.js и пытается нарисовать график с помощью макета Dagre в зависимости от входа пользователя. Количество узлов обычно составляет 50-100.Как справляться с ситуацией с несколькими деревьями при использовании макета dagre в Cytoscape.js

Хотя Dagre хорошо работает для одного дерева, когда граф содержит несколько деревьев (а иногда и включает в себя независимые узлы), корни этих деревьев автоматически расположены горизонтально (как показано на рисунке), что делает узлы и метки очень маленький. Если мы сможем воспользоваться горизонтальным пространством, график будет, несомненно, более ясным.

enter image description here

Мой вопрос заключается в том, что, как мы можем справиться с ситуацией с несколькими деревьями, вертикально расположить деревья (например, 4 корни в линии и другие могут быть расположены под этими деревьями), чтобы в полной мере использовать пространство макета.

+0

Ну, после того, как макет будет готов, можно ли использовать результаты позиционных dagre макета и пересчитать позицию каждого узла? – yetisun

+1

У меня есть глупый вопрос: по какой-то причине не просто создать один граф для каждого корня? – yochannah

+0

Ну, «дерево», о котором я упомянул в своем вопросе, не является типичной структурой дерева. Они являются составными узлами. Есть также грани между «деревьями» (я добавил фотографию, чтобы лучше объяснить это). В этом случае я не уверен, может ли это решить несколько макетов? Как бороться с краями между разными «деревьями»? – yetisun

ответ

0

Посмотрите на rankDir вариант для ориентации макета: http://js.cytoscape.org/#layouts/dagre

Для еще большего контроля, попробуйте запустить одну компоновку каждого подграфа/дерева: http://js.cytoscape.org/#collection/layout

Вы можете контролировать положение подграф с помощью boundingBox для каждого подграфа.

Смотрите также документы Dagre для получения подробной информации о параметрах конфигурации: https://github.com/cpettitt/dagre/wiki

+0

Thx, @maxkfranz. В качестве ответа на йочанну я добавил картинку, чтобы лучше объяснить проблему, с которой я столкнулся. Фактически, я хочу поместить составные узлы горизонтально, когда существует слишком много больших составных узлов (с большим количеством детей). Дагр с настройкой по умолчанию создает результат горизонтальной организации узлов. Я не знаю, может ли идея подграфа иметь дело с ребрами по составным узлам? – yetisun