Incluindo uma Raiz Invisível no Layout
Se o gráfico contiver várias árvores que estão desconectadas
umas das outras, o layout irá posicioná-las individualmente umas próximas
das outras. Cada componente conectado possui sua própria estrutura radial com camadas
circulares. No entanto, às vezes é apropriado ajustar todos os componentes
conectados em uma única estrutura de camada circular. Conceptually, it
is done by adding an invisible root at the center and connecting all
disconnected trees to this root. A Figura
Layout de componentes conectados sem e com uma raiz
invisível
mostra o efeito do uso de uma raiz invisível. It works only if the generic mechanism
to lay out connected components is disabled.
Para incluir uma raiz invisível no layout:
Chame os métodos:
treeLayout.setLayoutOfConnectedComponentsEnabled(false); treeLayout.setInvisibleRootUsed(true);

Layout de componentes conectados sem e com uma raiz
invisível
Espaçamento Uniforme para o Primeiro Círculo
O modo radial foi projetado para otimizar o espaço de forma
que o círculo tenha um raio pequeno e o espaço geral para o layout inteiro
seja pequeno. To achieve this result, the layout algorithm can
create larger gaps on the inner circles for better space usage of
the outer circles. It can produce unevenly spaced circles, most notably
for the first circle where all nodes have the same parent node.
Para evitar este efeito, é possível forçar os nós a serem
espaçados uniformemente em todo o primeiro círculo. Depending on the structure of the
graph, it can cause the overall layout to waste more space on the
other circles but it can produce a more pleasing graph.
Para ativar o espaçamento uniforme:
Use o método setFirstCircleEvenlySpacing:
treeLayout.setFirstCircleEvenlySpacing(true);

Primeiro círculo espaçado uniformemente e não
uniformemente
Para Especialistas: Forçando Todos os Níveis para Alternativos
When the layout mode
ALTERNATING_RADIAL
is used, the layout checks whether the alternating node arrangement
of a level saves space. Se não economizar espaço, o layout usará a organização
radial normal. Portanto, para muitos gráficos esparsos, os modos radial
e radial alternativo geram o mesmo resultado, porque a organização alternativa
não economiza espaço para nenhum nível. É possível desativar a verificação
de espaço, ou seja, executar uma organização alternativa para todos os
níveis, mesmo que isto resulte em gasto de espaço. Use o método setAllLevelsAlternating:
treeLayout.setAllLevelsAlternating(true);
Para Especialistas: Vários Círculos por Nível Alternativo
When the layout mode
ALTERNATING_RADIAL
is used, the layout places nodes of the same level alternately into
two circles instead of one circle. É possível aumentar ainda mais o número
de círculos.Use o método setNumberOfAlternatingCircles:
treeLayout.setNumberOfAlternatingCircles(3);
Neste caso, são usados três círculos. Ou seja, se o
sinalizador allLevelsAlternating for
true
,
o layout posicionará cada nível de nós em três círculos alternativos. Se o sinalizador allLevelsAlternating
for false
, ele verificará se cada nível
requer mais espaço para posicionar os nós em um círculo ou em três círculos. High values for the number of alternating circles must not
be used, because they slow down the algorithm and can produce link
crossings.If you set the number of alternating circles to
0
and the allLevelsAlternating flag is false
, then it has a special
meaning. Neste caso, a heurística tentará calcular
o melhor número de círculos por nível automaticamente. Por isso,
cada nível pode ter um número diferente de círculos, dependendo do
número de nós e dos relacionamentos de irmãos entre os nós.Para Especialistas: Configurando um Ângulo-filho Máximo
If a node has many child nodes, they can extend over
a major portion of the circle and, therefore, are placed nearly 360
degrees around the node. It can result in links overlapping some nodes.
A deficiência pode ser corrigida aumentando o deslocamento
entre nós-pais e filhos. However, it affects the layout globally, which means
that nodes without the deficiency are also affected. Para evitar
esse tipo de mudança global, é possível limitar o ângulo máximo entre
os dois raios do pai, se ele não for a raiz, e seus dois nós-filhos
externos. Esta ação aumenta o deslocamento entre nós-pais e filhos
apenas onde necessário.
Na figura
Ângulo-filho máximo, é
possível ver no layout à esquerda que muitos dos links sobrepõem outros
nós. No layout à direita, é possível ver como este problema foi resolvido,
configurando um ângulo-filho máximo entre dois raios de um pai e os dois
nós-filhos externos.

Ângulo-filho máximo
Para configurar um ângulo em graus.
Use o método setMaxChildrenAngle:
treeLayout.setMaxChildrenAngle(100);
Recommended values are
30
-180
. Configurar o valor como 0
significa que o valor
é irrestrito. The calculation of the angle is
not precise above 180 degrees or if the aspect ratio is not 1.0.