A veces un gráfico tiene varios enlaces entre
el mismo par de nodos. Si estos enlaces se direccionan directamente y
utilizan el mismo punto de conexión en los nodos, se superponen y no
se pueden distinguir. Para evitar solapamientos, los diseños
especificados tienen una modalidad de multienlace que se aplica
únicamente cuando el estilo de enlace se establece en
STRAIGHT_LINE_STYLE.
Esta modalidad no surte efecto si el estilo de enlace es
NO_RESHAPE_STYLE.
Ejemplo de cómo especificar el modo de direccionar varios enlaces
Para especificar la modalidad de multienlace, utilice el
método:
layout.setMultiLinkMode(mode);
Los valores válidos para la modalidad se ofrecen con el
ejemplo del diseño Force-directed:
- ibm_ilog.graphlayout.forcedirected.ForceDirectedLayout.NO_BUNDLE: Varios enlaces entre el mismo par de nodos no se tratan de ninguna manera especial. No se dispersan y pueden solaparse.
- ibm_ilog.graphlayout.forcedirected.ForceDirectedLayout.STRAIGHT_LINE_BUNDLE: Varios enlaces entre el mismo par de nodos se direccionan como líneas rectas, pero desplazadas las unas de las otras para evitar solapamientos. Al contrario que en la modalidad de restringir, el desplazamiento no está limitado por el tamaño del nodo.
- ibm_ilog.graphlayout.forcedirected.ForceDirectedLayout.NARROW_STRAIGHT_LINE_BUNDLE: Parecida a la modalidad de paquete de líneas rectas, pero el desplazamiento está limitado por el tamaño de los dos nodos finales del paquete de enlaces y, por lo tanto, puede parecer más estrecha. Si tiene demasiados multienlaces entre el mismo par de nodos, esta modalidad evita desplazar los enlaces tan lejos que ya no parezcan conectados a los nodos. Esta es la modalidad predeterminada.
- ibm_ilog.graphlayout.forcedirected.ForceDirectedLayout.CONNECTED_ONE_BEND_BUNDLE: Varios enlaces entre el mismo par de nodos se direccionan con una inflexión para evitar solapamientos. Todos los enlaces del paquete empiezan en el mismo punto de conexión y acaban en el mismo punto de conexión.
- ibm_ilog.graphlayout.forcedirected.ForceDirectedLayout.FREE_ONE_BEND_BUNDLE: Varios enlaces entre el mismo par de nodos se direccionan con una inflexión para evitar solapamientos. Al contrario que en la modalidad paquete de una sola inflexión conectada, el punto de conexión de enlace no es obligatorio; es decir, el nodo y el enlace pueden elegir libremente dónde colocar el punto de conexión. No hay ninguna garantía de que todos los enlaces del paquete empiecen o acaben en un punto común.
Si la modalidad de multienlace no es
NO_BUNDLE, se puede
especificar el desplazamiento entre los enlaces desplazados o entre
las curvas de los enlaces, respectivamente:
Utilice los métodos:
layout.setMultiLinkOffset(offset); layout.setMultiLinkMaxSpread(maxSpread);
El desplazamiento de multienlace es el desplazamiento
entre dos enlaces colindantes (o sus curvas). El valor de
maxSpread limita este
desplazamiento para evitar que se utilice demasiado espacio cuando
haya demasiados multienlaces. Si el desplazamiento de multienlace es
10 y el valor de
maxSpread es 60, el
desplazamiento efectivo es 10 si tiene menos de seis multienlaces. Si
tiene más multienlaces, el desplazamiento efectivo se reduce. Por
ejemplo, si tiene 15 multienlaces, el desplazamiento efectivo es de 4
en lugar de 10 para garantizar que los enlaces están separados como
máximo 60 unidades entre sí. Si la modalidad de multienlace es
NARROW_STRAIGHT_LINE_BUNDLE,
el desplazamiento efectivo también está limitado por el tamaño del
recuadro delimitador de ambos nodos finales de un paquete de enlaces.
Ejemplos de uso de la modalidad y el desplazamiento | Resultado gráfico |
---|---|
NO_BUNDLE | ![]() |
STRAIGHT_LINE_BUNDLE cuando se establece un valor para maxSpread demasiado alto. | ![]() |
NARROW_STRAIGHT_LINE_BUNDLE: se puede obtener el mismo resultado con STRAIGHT_LINE_BUNDLE reduciendo el valor de maxSpread. | ![]() |
CONNECTED_ONE_BEND_BUNDLE | ![]() |
FREE_ONE_BEND_BUNDLE
cuando los enlaces están conectados inicialmente a centros de nodos. Se puede obtener el mismo resultado con
CONNECTED_ONE_BEND_BUNDLE
en combinación con el valor
connectLinksToNodeCenters
establecido en true. Por ejemplo, consulte
ibm_ilog.graphlayout.forcedirected.ForceDirectedLayout.setConnectLinksToNodeCenters
|
![]() |