DOT
DOT es un lenguaje descriptivo en texto plano. Proporciona una forma simple de describir grafos entendible por humanos y computadoras. Los ficheros de DOT suelen usar la extensión .gv o .dot (aunque esta última esta en desuso debido a que puede confundirse con la usada por Microsoft Word en sus plantillas.[1]
Existen varios programas que pueden procesar programas en DOT. Algunos, como OmniGraffle, dot, neato, twopi, circo, fdp y sfdp, renderizan la descripción y generan gráficos en diversos formatos de imagen. Otros, como gvpr, gc, accyclic, ccomps, sccmap y tred, ejecutan cálculos sobre los grafos y por último, programas como GVedit, KGraphEditor, lefty, dotty o grappa proveen una interfaz para editar archivos DOT. La mayoría de estos programas o forman parte del paquete Graphviz o lo usan parcialmente para ejecutar cálculos.
Sintaxis
editarTipo de gráficas
editarGráficas indirectas
editarEn su forma más simple, DOT puede describir un grafo no dirigido, que es aquel que muestra relaciones simétricas entre varios objetos, por ejemplo la amistad entre personas. La palabra clave graph se usa para iniciar la definición de un nuevo grafo, los nodos son descritos por llaves {} y el guion doble (--) se usa para trazar las aristas entre los nodos.
// el nombre del grafo y el punto y coma al final de la línea son opcionales
graph nombre_del_grafo {
a -- b -- c;
b -- d;
}
Grafo dirigido
editarDOT también puede describir grafos dirigidos, como diagramas de flujo o de árboles de dependencias. La sintaxis es la misma, exceptuando que la definición se inicia con digraph y que se usa la flecha (->) para indicar el sentido de la relación.
digraph nombre_del_diagrama {
a -> b -> c;
b -> d;
}
Atributos
editarA los diagramas se les pueden aplicar atributos para modificar aspectos tales como el color, la forma, el tipo de línea, etc.[2] Los atributos se describen entre corchetes, atributo="valor", después de la definición del elemento y antes del punto y coma. Se pueden definir varios atributos separándolos por comas (,) y espacios.
graph nombre_del_diagrama {
// Este atributo se aplica a todo el diagrama modificando su tamaño
size="1,1";
// El atributo ''label'' (etiqueta) puede usarse para modificar el título de un nodo
a [label="Foo"];
// Este atributo cambia la forma del nodo b
b [shape=box];
// Se puede cambiar el tipo de línea que rodea a las figuras con los atributos ''color'' y ''style'' (estilo )
a -- b -- c [color=blue];
b -- d [style=dotted];
}
Las etiquetas definidas con el estilo HTML solo están disponibles en las versiones de Graphviz posteriores a noviembre de 2003). En particular, no son parte de la versión 1.10.[3]
Comentarios
editarDOT permite comentarios de una o múltiples líneas al estilo de los lenguajes de programación C y C++ e ignora también el texto que sigue a una almohadilla (#).
// Este es un comentario que se extiende a una sola línea.
/* Este es
un comentario que se extiende
en varias líneas. */
# Líneas como esta también son ignoradas.
Programas
editarEl lenguaje DOT define grafos, pero no provee un framework para generarlos. Existen varios programas que pueden ser usados para renderizar, ver o manipular grafos definidas en DOT:
- Graphviz - Una colección de librerías y utilidades para manipular y renderizar imágenes.
- Canviz - Librería en JavaScript para renderizar archivos DOT.
- Viz.js - Un cliente para Graphviz en JavaScript
- Grappa - Una envoltura de la librería Graphviz en Java.[4][5]
- Beluging - Un visor en Python alojado en la nube de Google y con extensiones Beluga.
- Tulip - Es un programa que puede importar archivos en DOT para su análisis
- ZGRViewer - Un visor basado en GraphViz
Limitaciones
editarEs posible modificar la disposición de los diagramas DOT. sin embargo no todas las herramientas que lo implementan prestan atención a todos los atributos posibles. Por lo tanto, el usuario debe prestar atención a la forma en que se posicionan en cada programa y tener en cuenta que esas posiciones cambiarán de un programa a otro.
Ejemplo:
digraph g {
node [shape=plaintext];
A1 -> B1;
A2 -> B2;
A3 -> B3;
A1 -> A2 [label=f];
A2 -> A3 [label=g];
B2 -> B3 [label="g'"];
B1 -> B3 [label="(g o f)'" tailport=s headport=s];
{ rank=same; A1 A2 A3 }
{ rank=same; B1 B2 B3 }
}
Hay dos problemas en la imagen superior. El cuadrado de la derecha no es perfecto y las etiquetas g' y (g o f)' están en el lugar incorrecto.
Estos errores pueden corregirse con programas como Inkscape u otros programas que reconozcan el formato SVG. En algunos casos, esto también puede solucionarse con el atributo pos.
Otros formatos para describir grafos
editarVéase también
editarReferencias
editar- ↑ «File extension .dot or .gv?». Consultado el 8 de marzo de 2011.
- ↑ «Node, Edge and Graph Attributes».
- ↑ HTML-Like Labels
- ↑ AT&T Labs Research - Grappa Archivado el 12 de octubre de 2010 en Wayback Machine.. .research.att.com. Retrieved on 2013-07-12.
- ↑ «Copia archivada». Archivado desde el original el 22 de octubre de 2014. Consultado el 21 de febrero de 2014.
Enlaces externos
editar- Wikimedia Commons alberga una categoría multimedia sobre Images generadas a partir de archivos DOT.
- DOT tutorial and specification
- Webapp generating DOT descriptions of Huffman trees
- Online graph visualization in SVG Archivado el 21 de mayo de 2012 en Wayback Machine.
- Boost Graph Library
- Grappa Drawing Package