Visualizando Grafos usando Graphviz

· osiux's blog

.org | .md | .gmi | .html

# Introducción

Generación de distintos grafos como estructuras de datos, estructuras de árbol, diagramas entidad-relación, de redes, de flujo, etc, utilizando el conjunto de herramientas Graphviz y su integración con otras aplicaciones. Desarrollo de scripts para la generación automática de grafos directamente desde una consola.

# Qué es Graphviz?

Es un conjunto de herramientas open-source realizado inicialmente en los laboratorios de investigación de AT&T para el dibujo de gráficos especificados en lenguaje de scripts DOT. Provee librerías para ser usadas por otras aplicaciones. Graphviz es software libre licenciado bajo CPL (Common Public License).

# Aplicaciones

# Grafos

Un grafo es un conjunto de objetos llamados vértices (o nodos) y una selección de pares de vértices, llamados aristas (arcs en inglés) que pueden ser orientados o no. Típicamente, un grafo se representa mediante una serie de puntos (los vértices) conectados por líneas (las aristas).

# Generadores de gráficos

# dot Gráficos direccionales

digraph dot
{
nodo1 -> nodo2;
nodo2 -> nodo3;
nodo2 -> nodo4;
nodo1 -> nodo5;
nodo5 -> nodo6;
nodo5 -> nodo7;
nodo1 -> nodo8;
}

{width="429" height="251" title="gráficos direccionales"}

# neato Gráficos no-direccionales

graph neato
{
nodo1 -- nodo2;
nodo2 -- nodo3;
nodo2 -- nodo4;
nodo1 -- nodo5;
nodo5 -- nodo6;
nodo5 -- nodo7;
nodo1 -- nodo8;
}

{width="482" height="308" title="gráficos no direccionales"}

# twopi Gráficos radiales

graph twopi
{
nodo1 -- nodo2;
nodo2 -- nodo3;
nodo2 -- nodo4;
nodo1 -- nodo5;
nodo5 -- nodo6;
nodo5 -- nodo7;
nodo1 -- nodo8;
}

{width="419" height="423" title="gráficos radiales"}

# fdp Gráficos no-direccionales

graph fdp
{
nodo1 -- nodo2;
nodo2 -- nodo3;
nodo2 -- nodo4;
nodo1 -- nodo5;
nodo5 -- nodo6;
nodo5 -- nodo7;
nodo1 -- nodo8;
}

{width="429" height="251" title="gráficos no direccionales"}

# circo Gráficos circulares

graph circo
{
nodo1 -- nodo2;
nodo2 -- nodo3;
nodo2 -- nodo4;
nodo1 -- nodo5;
nodo5 -- nodo6;
nodo5 -- nodo7;
nodo1 -- nodo8;
}

{width="858" height="778" title="gráficos circulares"}