Как предотвратить перекрытие вершин?
-
19-09-2019 - |
Вопрос
Я использую Юнга для рисования графиков.Ниже приведен простой график с древовидной компоновкой, который выглядит нормально.Все средства визуализации и трансформаторы используются по умолчанию.
альтернативный текст http://czuk.eu/stackoverflow/ballon_layout_default_size.png
Теперь я изменил размер узлов по умолчанию на 100 пикселей, установив пользовательский VertexShapeTransformer
.Проблема в том, что узлы начали перекрываться.Здесь вы можете увидеть, как это выглядит:
альтернативный текст http://czuk.eu/stackoverflow/ballon_layout_size_100px.png
Можно ли избавиться от перекрытия вершин?Это вопрос компоновки или какого-то преобразования формы?
Заранее благодарю вас за любые предложения :-)
Решение
После не столь долгого исследования я выяснил, что есть два статических атрибута, ответственных за установку минимальных расстояний между вершинами.Это TreeLayout.DEFAULT_DISTX
и TreeLayout.DEFAULT_DISTY
.К сожалению, эти атрибуты определяют фиксированное минимальное расстояние между вершинами, но не учитывают реальный размер каждой вершины, который может отличаться.Этот параметр действителен для TreeLayout
и тот BalloonLayout
это расширяет возможности TreeLayout
.
Я также попробовал другой макет, но не смог найти аналогичного решения.Этот вопрос для другого вопроса ;-)
Другие советы
Когда вы создаете TreeLayout
вы можете указать TreeLayout.DEFAULT_DISTX
и TreeLayout.DEFAULT_DISTY
в конструкторе:
TreeLayout treeLayout = new TreeLayout<String,Integer>(graph,100,100);
Возможно, вам нужно установить большее расстояние между узлами?Вы начали с определенного расстояния, с узлов определенного размера.Когда вы увеличили размер узла, вы уменьшили расстояние между ними, чтобы компенсировать необходимость установки дополнительного расстояния между узлами, чтобы они не перекрывались.