Graphviz desde Java

Saludos a tod@s, hoy publico un post acerca de Graphviz, una herramienta para crear grafos desde nuestro editor de textos, hoy utilizare java que es la herramienta que actualmente estoy manejando. Debo añadir que esto lo aprendi desde el blog de Rdebug, conociendo un método mas simple de hacer.

Pero bueno, para esto necesitamos primero descargarlo, Graphviz de la pagina oficialy descargan la ultima version ya que lo actualizan constantemente.

Cuando se instala, en archivos de programa genera una carpeta “bin” su direccion sera como esta:

“C:\Archivos de programa\Graphviz 2.21\bin”

Para esto tenemos que crear un archivo donde esta el codigo que queremos graficar, algunos ejemplos desde la pagina oficial aqui

Y desde consola escribimos el codigo siguiente

se debe invocar en la consola el siguiente comando

Código:

…path_de_dot…\dot.exe -Tjpg archivo_de_entrada -o archivo_de_salida

Ejemplo:

C:\Archivos de programa\Graphviz 2.21\bin\dot.exe -Tjpg grafo1.txt -o grafo1.jpg

Ahora para hacer esto desde java tenemos que escribir lo mismo que en consola, pero aca se hará por partes, claro esta solo es una forma de hacerlo, pueden haber muchas mas!

Lo que vamos  a hacer es usar Runtime.getRuntime().exec() de java para invocar a dot.exe y mandarle los parametros de tus archivos que queres pasar a jpg.

public void generar(){

try {

//path del dot.exe,por lo general es la misma, pero depende de donde hayas instalado el paquete de Graphviz

String dotPath = “C:\\Program Files (x86)\\Graphviz2.26.3\\bin\\dot.exe”;

//path del archivo creado con el codigo del graphviz que queremos

String fileInputPath = “C:\\path..\\codigo.txt”;

//path de salida del grafo, es decir el path de la imagen que vamos a crear con graphviz

String fileOutputPath = “C:\\path..\\grafo1.jpg”;

//tipo de imagen de salida, en este caso es jpg

String tParam = “-Tjpg”;

String tOParam = “-o”;

//concatenamos nuestras direcciones. Lo que hice es crear un vector, para poder editar las direcciones de entrada y salida, usando las variables antes inicializadas

//recordemos el comando en la consola de windows: C:\Archivos de programa\Graphviz 2.21\bin\dot.exe -Tjpg grafo1.txt -o grafo1.jpg Esto es lo que concatenamos en el vector siguiente:

String[] cmd = new String[5];
cmd[0] = dotPath;
cmd[1] = tParam;
cmd[2] = fileInputPath;
cmd[3] = tOParam;
cmd[4] = fileOutputPath;

//Invocamos nuestra clase 

Runtime rt = Runtime.getRuntime();

//Ahora ejecutamos como lo hacemos en consola

rt.exec( cmd );

} catch (Exception ex) {
ex.printStackTrace();
}  finally {
}
}

Y listo con esto puedes hacer un copy & paste a tu codigo, y cambiar los parametros, solo tienes que tener cuidado con los diferentes path’s que se usan, para que invocar el .dot, luego mostrar la imagen donde se requiera!  :)

18 comentarios (+¿añadir los tuyos?)

  1. rous maik
    Ago 13, 2012 @ 23:58:44

    no se entiende ni madres, esta mejor explicado en ruby blog, separa el codigo que no se lee con ese fondo rosa

    Responder

    • irisus90
      Ago 14, 2012 @ 09:52:00

      Si gracias, ya separe un poco el codigo, pero veras el texto que está en “//” y en letra cursiva son comentario, para que vean qué significa cada linea, y el texto que esta en negrita es codigo.
      El metodo se llama GENERAR; tecnicamente solo esta para copiar y pegar! Que es lo que no entiendes?? Si tienes alguna duda me comentas, y que bueno que entendiste desde Rdebug, yo tambien aprendí alli😉
      Saludos

      Responder

  2. Jose
    Ago 14, 2012 @ 00:44:36

    mira tengo que hacer una practica para la U, solo queria si no me podes pasar este tu ejemplo es que me urge y como no se distingue bn xfa te lo agradecere mucho porfacor salvame la vida

    Responder

    • irisus90
      Ago 14, 2012 @ 09:54:18

      Fijate que ya no tengo el ejemplo en mis archivos lo siento! =/, pero este método se llama GENERAR, lo que esta en “//” y en letra cursiva, es comentario que explica cada linea, y lo que esta en negrita es el código que hace el grafo.
      Si tienes duda me comentas
      Saludos..!

      Responder

      • Jose
        Ago 14, 2012 @ 15:42:00

        mira es no se como aplicarlo a java en tu metodo concatenar no entiendo mucho como le metiste los parametros del grafo o donde dice (escribo+= “y no se que cosas”) es que no se aprecia bn en el video

      • Jose
        Ago 15, 2012 @ 00:40:13

        mira sera que no tenes un ejemplo asi como en el que subiste a youtube que me lo prestes disculpa tanta molestia

      • irisus90
        Ago 15, 2012 @ 11:48:07

        Ahhh bueno, voy a revisar el video, que ya no me acuerdo!🙂 hehe, y esque ya no tengo los archivos =/, si consigo el ejemplo te lo mando!😀

      • Jose
        Ago 15, 2012 @ 20:21:31

        te lo agradeceria un monton y disculpa tanta molestia gracias

  3. Jose
    Ago 14, 2012 @ 15:43:24

    es q es duda del video que publicaste en youtube

    Responder

    • irisus90
      Ago 15, 2012 @ 17:18:27

      Mira, en el tutorial mi metodo concatenar, lo que hace es que va concatenando el texto que se ingresa desde la interfaz, (el texto de 1, 2, 3), para que cada nodo que incluya tenga el nombre de éste texto, lo demás que dice ahí es el formato que le quise poner a mi grafo, en sí es el estilo, puedes ver ejemplos y cómo hacerlos desde la pagina oficial http://bit.ly/RShuu2, en ese ejemplo el estilo que use mas o menos es este http://bit.ly/OjpKBb.

      Responder

  4. Alina
    Ago 17, 2012 @ 17:02:56

    oye en verdad gracias! excelente la informacion que colocaste ahi arriba me sirvio mucho!😀

    Responder

  5. nimadresLOL
    Sep 29, 2012 @ 21:28:48

    Te amo gracias necesitaba algo asi!!!

    Responder

  6. alexander19093
    Jun 28, 2013 @ 04:54:10

    Me a servido mucho.
    Gracias por el aporte.

    Responder

  7. jossy
    Nov 18, 2014 @ 16:14:35

    hola me da un error acceso denegado que puedo hacer

    Responder

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: