martes, 14 de junio de 2011

Dibujando grafos en Graphviz

¿Pero que es Graphviz?

Es una aplicación de visualización de gráficos de código abierto que incluye un gran número de programas de trazado de grafico; además cuenta con interfaces interactivas y vía web, así como herramientas auxiliares y bibliotecas de funciones, existiendo versiones tanto para Windows como para Linux.

Graphviz cuenta con muchas características para personalizar los diagramas tales como opciones para etiquetas, colores, fuentes, diseños en forma de tabla, estilos de línea, enlaces y formas. En la práctica, los gráficos suelen ser generados partiendo de fuentes externas de datos, pero también puede hacerse manualmente, bien editando un fichero de texto plano en lenguaje DOT o bien mediante un editor gráfico.

dot: realiza dibujos “jerárquicos” o por capas de gráficos directos. El algoritmo de representación trata de colocar todos los enlaces en la misma dirección (de arriba abajo o de izquierda a derecha) y después trata de evitar los cruces entre enlaces, y por último, reducir sus longitudes.

neato: crea “trazados elásticos”. emplea el algoritmo Kamada-Kawai, que es equivalente a un escalado estadístico multidimensional.

fdp: crea “trazados elásticos”. Implementa el heurístico Fruchterman-Reingold que incluye un solucionador por cuadrículas para manejar los gráficos más grandes y los grupos dentro de los gráficos indirectos.

twopi: diagrama radial. Se sitúan los nodos en círculos concéntricos dependiendo de su distancia a un nodo raíz dado.

*************************************************************************************
Para realizar la instalación en Linux refiriéndome a la distribución de Ubuntu basta con escribir lo siguiente en una terminal:

sudo apt-get install graphviz

Teniendo instalado el programa, crearemos un archivo con extensión .dot en el cual escribiremos el código que generara nuestro grafo.

Ejemplo:

digraph graf {
size = "4,4";
main [shape=box];
main -> parse [weight=8];
parse -> execute;
main -> init [style=dotted];
main -> cleanup;
execute -> {make_string; printf}
init -> make_string;
edge [color=red];
main -> printf [style=bold, label="100 times"];
make_string [label="make a\nstring"];
node [shape=box,style=filled,color=".7 .3 1.0"];
execute -> compare;
}


// Para generar el gráfico abrimos una terminal, nos direccionamos en la carpeta donde tengamos guardado el archivo .dot, ahora en la terminal escribimos lo siguiente:

dot -Tjpg graf.dot -o graf.jpg

graf.dot -> seria el nombre que le demos al archivo que contenga el código para generar el grafo.

graf.jpg -> es el nombre que le daremos a nuestro gráfico y el tipo de formato.

El gráfico tendría que quedar a si :


No hay comentarios:

Publicar un comentario