El diseño de gráficos es, en general, una tarea compleja
que a menudo utiliza la heurística para resolver problemas
NP-completos (problemas que no pueden solucionarse fácilmente desde
el punto de vista computacional). Distintas estrategias heurísticas
tienen diferentes características de velocidad. Los gráficos pequeños
no suelen necesitar una optimización del rendimiento. Algunos
algoritmos de diseño están pensados para gráficos medianos, pero sólo
se dispone de unos pocos algoritmos para gráficos grandes.
Utilice el diseño sólo cuando sea necesario
El algoritmo de diseño de gráficos generalmente es la
parte más compleja y lenta de la aplicación. Diseñe las aplicaciones
de modo que utilicen el diseño de gráficos con moderación y sólo
cuando sea necesario. Por ejemplo, puede incluir un botón que active
el diseño, de modo que éste no tenga que ejecutarse continuamente
durante todas las interacciones.
Utilice enlaces ortogonales sin diseño de enlaces
Si la aplicación requiere formas de enlaces ortogonales,
puede tener la tentación de utilizar un diseño de enlaces en
modalidad de diseño automático (consulte
setAutomaticLinkLayout). Sin embargo, esta modalidad hace que el diseño se
desencadene cada vez que se mueve un nodo. Si tiene muchos enlaces,
un diseño de enlaces totalmente automático puede ser lento. Un
método alternativo consiste en utilizar el tipo de forma ortogonal de
enlace (véase setShapeType). Este tipo garantiza que la forma del enlace sigue
siendo ortogonal, sin tener que analizar todos los enlaces para
reducir el número de intersecciones de enlaces y los solapamientos.
Por lo tanto, puede ser más eficaz que ejecutar el diseño de enlaces
en modalidad automática.
Para habilitar el tipo de forma ortogonal en un enlace,
emita una de las llamadas siguientes:
link.setShapeType(ibm_ilog.diagram.LinkShapeType.Orthogonal);
link.setShapeType(ibm_ilog.diagram.LinkShapeType.OrthogonalEditable);
Uso del diseño adecuado al tamaño del gráfico
Distintos algoritmos de diseño de gráficos admiten
distintos tamaños.
- El Diseño de árbol y el Diseño de cuadrícula pueden manejar gráficos grandes.
- El Diseño jerárquico puede manejar gráficos medianos que no tienen demasiados enlaces.
- El Diseño dirigido por fuerzas es el algoritmo más lento y no es adecuado para gráficos grandes.
Para obtener más información, consulte
Velocidad de los algoritmos de diseño de gráficos .
No se muestran todos los enlaces
Si tiene un gráfico grande con enlaces, lo mejor es
mostrar sólo un de árbol de expansión del gráfico y ocultar los otros
enlaces. El árbol de expansión se pueden diseñar con el Diseño
de árbol.
Diseñe su aplicación de modo que utilice interacciones
para que el usuario se percate de los enlaces ocultos. Por ejemplo,
si selecciona un nodo puede resaltar todos los nodos que están al
alcance de este nodo mediante enlaces ocultos o visibles. Es más
ergonómico que mostrar todos los enlaces al mismo tiempo. Los ojos
del usuario no puede encontrar los enlaces si se muestran demasiados
a la vez.
Agrupación en clúster de subgráficos y contracción de éstos
A veces los gráficos tienen información de clúster
importante. Por ejemplo, un gráfico de población puede agruparse en
clúster en función de la nacionalidad o de sus relaciones familiares. Cada clúster se pueden representar como un subgráfico anidado
(Subgraph)
que se puede contraer o expandir.
Los subgráficos tienen un diseño más rápido cuando se
contraen, ya que no es necesario presentar el contenido interno de
los clústeres. El diagrama también se vuelve más comprensible si sólo
se muestran los detalles de interés mientras los subgráficos menos
interesantes están contraídos. Por el contrario, si todos los
subgráficos están expandidos, cuando la profundidad de anidamiento de
los subgráficos es alta, el diseño puede ralentizarse. Cuando una
aplicación utiliza gráficos grandes, una agrupación en clúster de
subgráficos anidados cuidadosamente diseñada puede mejorar la
experiencia del usuario.
Velocidad de los algoritmos de diseño de gráficos
La velocidad de los algoritmos de diseño de gráficos
depende del tipo de gráfico y de los parámetros de diseño. Algunos
diseños son lentos para determinados tipos de gráficos.
Diseño de árbol
El Diseño de árbol es rápido y puede manejar gráficos
muy grandes, siempre que no se utilicen la modalidad de volcado
automático.
- Las modalidades de diseño FREE (libre) y LEVEL (de nivel) son las más rápidas.
- Las modalidades de diseño radiales son algo más lentas, pero siguen siendo lo bastante rápidas para gráficos grandes.
- Las modalidades de diseño de volcado son lentas y funcionan mejor para gráficos pequeños.
Para obtener más información, consulte
Diseño de árbol (DA).
Diseño jerárquico
La velocidad del Diseño jerárquico depende de la
densidad (la proporción entre el número de enlaces y el número de
nodos) del gráfico. El Diseño jerárquico puede manejar gráficos
grandes que tengan pocos enlaces, pero puede ser lento para gráficos
más pequeños que tengan muchos enlaces.
La velocidad y calidad del Diseño jerárquico también
depende del número de restricciones. Cuantas menos restricciones
haya, mayor será la libertad que tendrá el diseño para colocar los
nodos y más rápidamente se ejecutará el diseño. En concreto, evite
los conflictos de restricciones, porque detectarlos es lento.
Para obtener más información, consulte
Diseño jerárquico (DJ) .
Diseño de cuadrícula
El Diseño de cuadrícula es rápido y puede manejar
gráficos grandes. Sin embargo, en la modalidad de diseño
TILE_TO_MATRIX, la velocidad depende del tamaño de la malla de la
cuadrícula (la distancia entre las líneas de la cuadrícula). Cuanto menor sea el tamaño de la malla
de la cuadrícula, más lento será el diseño. En otras modalidades de diseño, el tamaño de la malla de la
cuadrícula no tiene ninguna influencia en el rendimiento.
Para obtener más información, consulte
Diseño de cuadrícula (DC) .
Diseño de enlaces cortos y largos
La velocidad del Diseño de enlaces depende del número de
enlaces. Los Diseños de enlaces son adecuados para gráficos pequeños
y medianos. Si el gráfico tiene muchos enlaces, consulte
Utilice enlaces ortogonales sin diseño de enlaces.
En el caso del Diseño de enlaces largos, la velocidad
depende del tamaño de la malla de la cuadrícula (la distancia entre
las líneas de la cuadrícula). Cuanto menor sea el tamaño de la malla
de la cuadrícula, más lento será el diseño. Si es posible, evite la
modalidad de búsqueda exhaustiva
(
LongLinkLayout.setExhaustiveSearching
),
porque es lenta. Para obtener más información, consulte
Diseño de enlaces (DE) .
Diseño dirigido por fuerzas
Este algoritmo proporciona tres modalidades opcionales:
incremental, no incremental, y rápida de varios niveles. La última es
más rápida para gráficos medianos y grandes.
Para obtener más información sobre estas modalidades,
consulte
Modalidad de diseño
para la modalidad de diseño del Diseño dirigido por fuerzas.
Diseño en el servidor
Para gráficos grandes o complejos, puede mejorar el
rendimiento utilizando el Diseño en el servidor. El diseño en el
servidor envía todos los datos del gráfico al servidor y ejecuta el
diseño del gráfico en el servidor. Puede ser más rápido dependiendo
de:
- La velocidad del motor de JavaScript del navegador.
- La velocidad de la conexión de red entre el cliente y el servidor.
Interfaces de personalización del diseño
Varios algoritmos de diseño dan soporte a interfaces de
personalización, como el
INodeBoxProvider
,
INodeSideFilter
o
ILinkConnectionBoxProvider
.
Cuando utilice estas interfaces, el algoritmo de diseño cambia
rápidamente al código personalizado. Tenga cuidado al implementar
estas interfaces, porque pueden reducir el rendimiento del algoritmo
de diseño.