vertice tipos subgrafos simple matematicas isomorfos grafos grafo grado ejemplos discretas conexo completo bipartitos graphviz dot

graphviz - tipos - subgrafos matematicas discretas



¿Cómo controlar el diseño de subgrafos en punto? (1)

Tengo un digraph compuesto de muchos subgraphs independientes y simples de varios tamaños. dot coloca todos estos subgrafos horizontalmente, por lo que termino con un archivo de salida de 40000x200, por ejemplo:

G1 G2 G3 G.....4 G5

¿Cómo le dot a dot que diseñe estos subgrafos en ambas dimensiones para obtener algo como:

G1 G2 G3 G.....4 G5

Gracias.


Los pasos para lograr esto utilizan múltiples herramientas de graphviz que pueden ser canalizadas juntas.

La siguiente línea es una configuración posible, graph.dot es el archivo que contiene su (s) gráfico (s). Puede que tenga que jugar con las opciones.

ccomps -x graph.dot | dot | gvpack -array3 | neato -Tpng -n2 -o graph.png

Y aquí está la explicación:

1. Separar los gráficos desconectados.

Herramienta: ccomps

descompone los gráficos en sus componentes conectados

La opción -x ( solo se imprimen los componentes conectados, como gráficos separados ) es probablemente todo lo que se necesita.

2. Diseña cada gráfica

Herramienta: punto

Cada gráfico dirigido se presenta, uno por uno. Este paso es necesario para obtener la posición de los nodos y bordes.

3. Empaque todos los gráficos trazados en uno

Herramienta: gvpack

lee en una secuencia de gráficos, combina los gráficos en un solo diseño y produce un único gráfico que sirve como la unión de los gráficos de entrada.

Debes leer la documentación de las opciones para esta herramienta y jugar con las opciones. Por ejemplo, -array se utiliza para diseñar los gráficos en forma de cuadrícula, y ofrece varias banderas para controlar el diseño.

4. Crea la salida

Herramienta: neato

La opción -n2 le dice a neato que no -n2 los gráficos de entrada sino que use los atributos de posición existentes.

Ejemplo gráfico:

digraph G { subgraph G1 { a->{b; c;}; } subgraph G2 { d -> {e; f;}; } subgraph G3 { g -> h; } subgraph G4 { i -> j; } subgraph G5 { {k; l;} -> m; } }

Edición: Ordenar los dígrafos en gvpack

Para determinar el orden de aparición de los subgrafos en el diseño combinado creado por gvpack , cada subgrafo necesitará un atributo sortv .

Por ejemplo, los siguientes gráficos:

digraph G1 { sortv=1; a->{b; c;}; } digraph G2 { sortv=2; d -> {e; f;}; } digraph G3 { sortv=3; g -> h; } digraph G4 { sortv=4; i -> j; } digraph G5 { sortv=5; {k; l;} -> m; }

puede ser transformado usando

dot graph.dot | gvpack -array_u | neato -Tpng -n2 -o graph.png

Resultando en