DOT es un lenguaje de descripción de gráficos . Los gráficos DOT suelen ser archivos con la extensión de nombre de archivo gv o dot . Se prefiere la extensión gv , para evitar confusiones con el punto de extensión utilizado por las versiones de Microsoft Word anteriores a 2007. [1]
Extensiones de nombre de archivo | .gv |
---|---|
Tipo de medio de Internet | text / vnd.graphviz |
Tipo de formato | Lenguaje de descripción de gráficos |
¿ Formato abierto ? | sí |
Varios programas pueden procesar archivos DOT. Algunos, como dot , neato , twopi , circo , fdp y sfdp , pueden leer un archivo DOT y representarlo en forma gráfica. Otros, como gvpr , GC , acíclico , ccomps , sccmap y tred , leer archivos DOT y realizan cálculos sobre el gráfico representado. Finalmente, otros, como lefty , dotty y grappa , proporcionan una interfaz interactiva. El GVeditarLa herramienta combina un editor de texto con un visor de imágenes no interactivo. La mayoría de los programas son parte del paquete Graphviz o lo usan internamente.
Sintaxis
Tipos de gráficos
Gráficos no dirigidos
En su forma más simple, DOT se puede utilizar para describir un gráfico no dirigido . Un gráfico no dirigido muestra relaciones simples entre objetos, como la amistad entre personas. La palabra clave de gráfico se usa para comenzar un nuevo gráfico y los nodos se describen entre llaves. Se utiliza un guión doble (-) para mostrar las relaciones entre los nodos.
// El nombre del gráfico y el punto y coma son opcionalesgraph nombre del gráfico { a - b - c ; b - d ; }
Gráficos dirigidos
Similar a los gráficos no dirigidos, DOT puede describir gráficos dirigidos , como diagramas de flujo y árboles de dependencia . La sintaxis es la misma que para los gráficos no dirigidos, excepto que se usa la palabra clave digraph para comenzar el gráfico y se usa una flecha (->) para mostrar las relaciones entre los nodos.
dígrafo graphname { a -> b -> c ; b -> d ; }
Atributos
Se pueden aplicar varios atributos a gráficos, nodos y bordes en archivos DOT. [2] Estos atributos pueden controlar aspectos como el color, la forma y los estilos de línea. Para los nodos y los bordes, uno o más pares de atributo-valor se colocan entre corchetes ([]) después de una declaración y antes del punto y coma (que es opcional). Los atributos de gráfico se especifican como pares directos de atributo-valor debajo del elemento de gráfico, donde varios atributos están separados por una coma o usando varios conjuntos de corchetes, mientras que los atributos de nodo se colocan después de una declaración que contiene solo el nombre del nodo, pero no el relaciones entre los puntos.
graph nombre del gráfico { // Este atributo se aplica al gráfico en sí tamaño = "1,1" ; // El atributo de etiqueta se puede usar para cambiar la etiqueta de un nodo a [ label = "Foo" ]; // Aquí, se cambia la forma del nodo. b [ forma = caja ]; // Estos bordes tienen propiedades de línea diferentes a - b - c [ color = azul ]; b - d [ estilo = punteado ]; // [style = invis] oculta un nodo.}
Las etiquetas similares a HTML solo están disponibles en versiones de Graphviz que son más recientes que mediados de noviembre de 2003, en particular, no se consideran parte de la versión 1.10. [3]
Comentarios
Dot admite comentarios de una sola línea y varias líneas de estilo C y C ++ . Además, ignora las líneas con un símbolo de signo de número (#) como primer carácter.
// Este es un comentario de una sola línea./* Esto es un línea múltiple comentario. * /# Las líneas como esta también se ignoran.
Un simple ejemplo
A continuación se muestra un guión de ejemplo que describe la estructura de enlace de una molécula de etano . Este es un gráfico no dirigido y contiene atributos de nodo como se explicó anteriormente.
grafique etano { C_0 - H_0 [ tipo = s ]; C_0 - H_1 [ tipo = s ]; C_0 - H_2 [ tipo = s ]; C_0 - C_1 [ tipo = s ]; C_1 - H_3 [ tipo = s ]; C_1 - H_4 [ tipo = s ]; C_1 - H_5 [ tipo = s ]; }
Programas de maquetación
El lenguaje DOT define un gráfico, pero no proporciona facilidades para representar el gráfico. Hay varios programas que se pueden usar para renderizar, ver y manipular gráficos en el lenguaje DOT:
General
- Graphviz : una colección de bibliotecas y utilidades para manipular y renderizar gráficos
JavaScript
- Canviz: una biblioteca de JavaScript para renderizar archivos DOT [4]
- d3-graphviz: una biblioteca de JavaScript basada en Viz.js y D3.js que genera gráficos DOT y admite transiciones animadas entre gráficos y manipulación interactiva de gráficos [5]
- Vis.js: una biblioteca de JavaScript que acepta DOT como entrada para gráficos de red. [6]
- Viz.js: un puerto JavaScript de Graphviz que proporciona un contenedor simple para usarlo en el navegador.
- hpcc-js / wasm Graphviz: una biblioteca WASM rápida para Graphviz similar a Viz.js [7]
Java
- Gephi : una plataforma interactiva de visualización y exploración para todo tipo de redes y sistemas complejos, gráficos dinámicos y jerárquicos.
- Grappa: un puerto parcial de Graphviz a Java
- graphviz-java: un puerto parcial de código abierto de Graphviz a Java disponible en github.com
- ZGRViewer: un visor DOT [8]
Otro
- Beluging, un visor basado en Python y Google Cloud Platform de las extensiones DOT y Beluga
- dot2tex - un programa para convertir archivos de DOT a PGF / TikZ o PSTricks , ambos renderizados en LaTeX [9]
- OmniGraffle : una aplicación de ilustración digital para macOS que puede importar un subconjunto de DOT, produciendo un documento editable (pero el resultado no se puede exportar de nuevo a DOT)
- Tulip : un marco de software en C ++ que puede importar archivos DOT para su análisis [10]
- VizierFX: una biblioteca de renderizado de gráficos Apache Flex en ActionScript [11]
Limitaciones
Es posible especificar detalles de diseño con DOT, aunque no todas las herramientas que implementan el lenguaje DOT prestan atención a los atributos de posición. Por lo tanto, dependiendo de las herramientas utilizadas, los usuarios deben confiar en algoritmos de diseño automatizados (que pueden dar como resultado una salida inesperada) o nodos colocados a mano tediosamente.
Por ejemplo:
digraph g { nodo [ forma = texto sin formato ]; A1 -> B1 ; A2 -> B2 ; A3 -> B3 ; A1 -> A2 [ etiqueta = f ]; A2 -> A3 [ etiqueta = g ]; B2 -> B3 [ etiqueta = "g '" ]; B1 -> B3 [ label = "(gof) '" tailport = s headport = s ]; { rango = igual ; A1 A2 A3 } { rango = igual ; B1 B2 B3 } }
Hay dos problemas en la imagen titulada "Una imagen que parece renderizada incorrectamente". El cuadrado de la derecha no es un cuadrado perfecto y algunas etiquetas no están al lado de la flecha relacionada ((gof) ') y algunas se superponen a las flechas.
Esto se puede solucionar con Inkscape u otros editores SVG . En algunos casos, esto también se puede solucionar utilizando el atributo pos para especificar una posición y el atributo de peso para cuadrar el gráfico.
Ver también
- herramienta lisp2dot para convertir árboles de programas similares al lenguaje de programación Lisp al lenguaje DOT. Diseñado para su uso con programación genética .
Notas
- ^ "¿Extensión de archivo .dot o .gv?" . marc.info . Consultado el 8 de marzo de 2011 .
- ^ "Atributos de nodo, borde y gráfico" . graphviz.org . Consultado el 12 de mayo de 2017 .
- ^ "Formas de nodo: etiquetas similares a HTML" . graphviz.org . Consultado el 12 de mayo de 2017 .
- ^ "canviz: graphviz en un lienzo" . Consultado el 2 de junio de 2017 .
- ^ "GitHub - magjac / d3-graphviz: renderizado Graphviz DOT y transiciones animadas usando D3" . github.com . Consultado el 6 de junio de 2018 .
- ^ "Importar datos en idioma DOT" . vis.js . Consultado el 22 de diciembre de 2018 .
- ^ "hpcc-js / wasm" . Consultado el 21 de octubre de 2020 .
- ^ "ZGRViewer" . zvtm.sourceforge.net . Consultado el 12 de mayo de 2017 .
- ^ "dot2tex - Un convertidor de Graphviz a LaTeX" . dot2tex.readthedocs.io . 2019-11-01.
- ^ "Software de visualización de datos - Tulip" . tulip.labri.fr . Consultado el 12 de mayo de 2017 .
- ^ "GitHub - gvhung / vizierfx: exportado automáticamente desde code.google.com/p/vizierfx" . github.com . Consultado el 12 de mayo de 2017 .
enlaces externos
- Tutorial y especificación del DOT
- Dibujar gráficos con punto
- Atributos de nodo, borde y gráfico
- Formas de nodo
- Galería de ejemplos
- Webapp que genera descripciones DOT de árboles de Huffman
- Visualización de gráficos en línea en SVG
- Biblioteca de gráficos de impulso