Sugerencias y trucos

Cómo añadir un nodo raíz invisible para el diseño

Si el gráfico contiene varios árboles que están desconectados entre sí, el diseño los coloca individualmente uno junto a otro. Cada componente conectado tiene su propia estructura radial con capas circulares. Sin embargo, algunas veces es adecuado acomodar todos los componentes conectados en una sola estructura formando una capa circular. Conceptualmente, se hace añadiendo una raíz invisible en el centro y conectando todos los árboles desconectados con este nodo raíz. En la figura Diseño de componentes conectados sin y con un nodo raíz invisible se muestra el efecto de utilizar un nodo raíz invisible. Sólo funciona si el mecanismo genérico para diseñar componentes conectados está inhabilitado.
Para añadir un nodo raíz invisible al diseño:
Llame a los métodos:
treeLayout.setLayoutOfConnectedComponentsEnabled(false);
treeLayout.setInvisibleRootUsed(true);
Imagen
de diseños de árbol que ilustra el manejo genérico de gráficos no
conexos en comparación con el manejo que utiliza una raíz
invisible
Diseño de componentes conectados sin y con un nodo raíz invisible

Espaciado uniforme del primer círculo

La modalidad radial está diseñada para optimizar el espacio de modo que los círculos tengan un radio pequeño y el espacio total que ocupe todo el diseño sea pequeño. Para lograr este resultado, el algoritmo de diseño puede crear más espacios en los círculos internos para mejorar el uso del espacio de los círculos externos. Esto puede generar círculos espaciados de forma desigual, especialmente para el primer círculo donde todos los nodos tienen el mismo nodo padre.
Para evitar este efecto, puede obligar a los nodos a que se coloquen espaciados de manera uniforme en el primer círculo. Dependiendo de la estructura del gráfico, esto puede hacer que el diseño general desperdicie más espacio en los otros círculos pero puede generar un gráfico estéticamente más agradable.
Para habilitar el espaciado uniforme:
Utilice el método setFirstCircleEvenlySpacing:
treeLayout.setFirstCircleEvenlySpacing(true);
Imagen
de diseños de árbol que ilustra el parámetro primer círculo espaciado
de manera uniforme
Primer círculo espaciado de manera uniforme y de manera desigual

Para expertos: cómo obligar a todos los niveles a alternarse

Cuando se utiliza la modalidad de diseño ALTERNATING_RADIAL, el diseño comprueba si la disposición alterna de los nodos de un nivel ahorra espacio. Si no ahorra espacio, el diseño utiliza la disposición radial normal. Por lo tanto, en muchos gráficos dispersos se obtiene el mismo resultado con la modalidad radial y con la modalidad radial alterna porque la disposición alterna no ahorra espacio para cualquier nivel. Es posible inhabilitar la comprobación de espacio, es decir, llevar a cabo una disposición alterna para todos los niveles aunque esto lleve a desperdiciar espacio.
Utilice el método setAllLevelsAlternating:
treeLayout.setAllLevelsAlternating(true);

Para expertos: varios círculos por nivel alterno

Cuando se utiliza la modalidad de diseño ALTERNATING_RADIAL, el diseño coloca los nodos del mismo nivel de forma alterna en dos círculos en vez de en uno. Es posible aumentar el número de círculos.
Utilice el método setNumberOfAlternatingCircles:
treeLayout.setNumberOfAlternatingCircles(3);
En este caso, se utilizan tres círculos. Esto significa que, si el distintivo allLevelsAlternating es true, el diseño coloca cada nivel de nodos en tres círculos alternos. Si el distintivo allLevelsAlternating es false, comprueba si cada nivel requiere más espacio para colocar los nodos en un círculo o en tres círculos. No deben utilizarse valores altos para el número de círculos alternos, ya que ralentizan el algoritmo y pueden producir intersecciones de enlaces.
Establecer el número de círculos alternos en 0 y el distintivo allLevelsAlternating en false tiene un significado especial. En este caso, un método heurístico intenta calcular automáticamente cuál es el mejor número de círculos por nivel. Como consecuencia, cada nivel puede tener un número diferente de círculos, dependiendo del número de nodos y de las relaciones de hermanos entre los nodos.

Para expertos: cómo establecer un ángulo máximo de hijos.

Si un nodo tiene muchos nodos hijo, pueden extenderse por gran parte del círculo y, por lo tanto, se colocan ocupando prácticamente los 360 grados del nodo. Esto puede provocar que los enlaces se solapen con algunos nodos. El defecto puede arreglarse aumentando el desplazamiento entre el nodo padre y los nodos hijo. Sin embargo, afecta al diseño global, lo que significa que los nodos sin el defecto también se ven afectados. Para evitar un cambio global, puede limitar el ángulo máximo entre los dos rayos que van del padre, si no es el nodo raíz, hasta sus dos nodos hijo más externos. Esta acción aumenta el desplazamiento entre el nodo padre y los nodos hijo sólo donde es necesario.
En la figura Ángulo máximo de hijos. , puede ver en el diseño de la izquierda que muchos de los enlaces se solapan con otros nodos. En el diseño de la derecha, puede verse cómo se ha resuelto este problema estableciendo un ángulo máximo de hijos entre dos rayos que parten de un nodo padre hasta los dos nodos hijo más externos.
Imagen
de diseños de árbol que ilustra el parámetro ángulo máximo de
hijos
Ángulo máximo de hijos.
Para establecer el ángulo en grados.
Utilice el método setMaxChildrenAngle:
treeLayout.setMaxChildrenAngle(100);
Los valores recomendados están comprendidos entre 30 y 180. Establecer el valor en 0 significa que el ángulo es libre. El cálculo del ángulo no es preciso por encima de 180 grados o si la proporción no es 1,0.