2009-04-17 8 views
6

Estoy usando Graphviz para dibujar un enrejado.
Los nodos son un conjunto de números.¿Cómo puedo imponer la posición y en un nodo cuando uso graphviz para dibujar celosías?

Siendo un enrejado, me gustaría que la posición de altura (el y) de un nodo represente el número de elementos en el conjunto representado por el nodo. Luego, la posición x debe definirse mediante graphviz para que la representación sea más clara.

¿Es posible?

Según la documentación de puntos, debe existir el atributo pos que debe definir la posición de un nodo. Pero aunque lo intenté muchas veces de muchas maneras diferentes, no pude obtener ningún gráfico donde se definiera la posición de un nodo. ¿Alguien tuvo éxito con esto?

Lo que sigue es el archivo de punto clásica que utilizo:

digraph G { 
"528 544\n640 768" -> "768 528"; 
"528 536\n530 539" -> "539"; 
"528 536\n530 539" -> "528"; 
"800 896 548\n944 566 728\n539 704 768" -> "704 768\n539 548"; 
"800 896 548\n944 566 728\n539 704 768" -> "944 728\n539 566"; 
"800 896 548\n944 566 728\n539 704 768" -> "944 800\n896 768"; 
"768 539" -> "768"; 
"768 539" -> "539"; 
"768" -> "∅"; 
"944" -> "∅"; 
"944 528 536\n530 566 560\n728 656 539" -> "528 536\n530 539"; 
"944 528 536\n530 566 560\n728 656 539" -> "944 728\n539 566"; 
"944 528 536\n530 566 560\n728 656 539" -> "944 656\n528 560"; 
"704 768\n539 548" -> "768 539"; 
"944 728\n539 566" -> "944"; 
"944 728\n539 566" -> "539"; 
"800 896 640\n944 560 528\n544 656 768" -> "528 544\n640 768"; 
"800 896 640\n944 560 528\n544 656 768" -> "944 656\n528 560"; 
"800 896 640\n944 560 528\n544 656 768" -> "944 800\n896 768"; 
"539" -> "∅"; 
"944 656\n528 560" -> "944"; 
"944 656\n528 560" -> "528"; 
"896 640 656 536\n530 728 539 704\n768 800 544 528\n548 944 566 560" -> "800 896 548\n944 566 728\n539 704 768"; 
"896 640 656 536\n530 728 539 704\n768 800 544 528\n548 944 566 560" -> "944 528 536\n530 566 560\n728 656 539"; 
"896 640 656 536\n530 728 539 704\n768 800 544 528\n548 944 566 560" -> "800 896 640\n944 560 528\n544 656 768"; 
"896 640 656 536\n530 728 539 704\n768 800 544 528\n548 944 566 560" -> "768 704 548\n528 530 544\n536 640 539"; 
"768 528" -> "768"; 
"768 528" -> "528"; 
"528" -> "∅"; 
"768 704 548\n528 530 544\n536 640 539" -> "528 544\n640 768"; 
"768 704 548\n528 530 544\n536 640 539" -> "704 768\n539 548"; 
"768 704 548\n528 530 544\n536 640 539" -> "768 528 530\n539 536"; 
"944 800\n896 768" -> "768"; 
"944 800\n896 768" -> "944"; 
"768 528 530\n539 536" -> "528 536\n530 539"; 
"768 528 530\n539 536" -> "768 539"; 
"768 528 530\n539 536" -> "768 528"; 
} 

Si alguien pueda escribir un ejemplo de un archivo en el que la altura de un nodo se define estaría muy agradecido.

Respuesta

7

Encontré la respuesta.

aquí: http://www.linuxdevcenter.com/pub/a/linux/2004/05/06/graphviz_dot.html?page=2

Esencialmente es posible definir qué conjuntos de nodos deben estar a la misma altura. Para obtener los nodos A y B en la misma altura, necesito agregar la línea: {rank = same; A B};

Así que aquí es un ejemplo similar a la anterior, pero con los nodos creados derecha:

digraph G { 
{rank=same; "768" "944" "539" "528" }; 
{rank=same; "768 539" "768 528" }; 
{rank=same; "768 640\n528 544" "528 536\n530 539" "768 704\n539 548" "944 728\n539 566" "944 656\n528 560" "944 800\n896 768" }; 
{rank=same; "800 896 548\n944 566 728\n539 704 768" "528 944 536\n530 566 560\n728 656 539" "800 896 944\n656 560 528\n544 640 768" "768 640 548\n528 530 544\n536 539 704" }; 
"768 640\n528 544" -> "768 528"; 
"528 536\n530 539" -> "539"; 
"528 536\n530 539" -> "528"; 
"800 896 548\n944 566 728\n539 704 768" -> "768 704\n539 548"; 
"800 896 548\n944 566 728\n539 704 768" -> "944 728\n539 566"; 
"800 896 548\n944 566 728\n539 704 768" -> "944 800\n896 768"; 
"768 539" -> "768"; 
"768 539" -> "539"; 
"768" -> "∅"; 
"944" -> "∅"; 
"528 944 536\n530 566 560\n728 656 539" -> "528 536\n530 539"; 
"528 944 536\n530 566 560\n728 656 539" -> "944 728\n539 566"; 
"528 944 536\n530 566 560\n728 656 539" -> "944 656\n528 560"; 
"768 704\n539 548" -> "768 539"; 
"944 728\n539 566" -> "944"; 
"944 728\n539 566" -> "539"; 
"800 896 944\n656 560 528\n544 640 768" -> "768 640\n528 544"; 
"800 896 944\n656 560 528\n544 640 768" -> "944 656\n528 560"; 
"800 896 944\n656 560 528\n544 640 768" -> "944 800\n896 768"; 
"539" -> "∅"; 
"944 656\n528 560" -> "944"; 
"944 656\n528 560" -> "528"; 
"896 640 656 536\n530 728 539 704\n768 800 544 528\n548 944 566 560" -> "800 896 548\n944 566 728\n539 704 768"; 
"896 640 656 536\n530 728 539 704\n768 800 544 528\n548 944 566 560" -> "528 944 536\n530 566 560\n728 656 539"; 
"896 640 656 536\n530 728 539 704\n768 800 544 528\n548 944 566 560" -> "800 896 944\n656 560 528\n544 640 768"; 
"896 640 656 536\n530 728 539 704\n768 800 544 528\n548 944 566 560" -> "768 640 548\n528 530 544\n536 539 704"; 
"768 528" -> "768"; 
"768 528" -> "528"; 
"528" -> "∅"; 
"768 640 548\n528 530 544\n536 539 704" -> "768 640\n528 544"; 
"768 640 548\n528 530 544\n536 539 704" -> "768 704\n539 548"; 
"768 640 548\n528 530 544\n536 539 704" -> "528 768 530\n539 536"; 
"944 800\n896 768" -> "768"; 
"944 800\n896 768" -> "944"; 
"528 768 530\n539 536" -> "528 536\n530 539"; 
"528 768 530\n539 536" -> "768 539"; 
"528 768 530\n539 536" -> "768 528"; 
} 
+0

+1, Ran y funcionó para mí. Me encanta Graphviz para generar rápidamente diagramas de estado. –

Cuestiones relacionadas