Cómo generar una imagen PNG desde un formato de archivo de puntos con Graphviz

user3425699:

Tengo una clase java que implementa una cola prioritaria. Luego tengo una prueba de clase que genera un gráfico como este:

digraph G {
Milan  (0.0)       ->     Turin  (1.2)       
Milan  (0.0)       ->     Montreal  (7.0)       
Turin  (1.2)       ->     Paris  (5.8)       
Turin  (1.2)       ->     Tokyo  (2.2)       
}

Este gráfico se guarda en un archivo llamado "cola".

Ahora deseo que este gráfico se muestre en una imagen PNG usando Graphviz. Entonces, la última llamada de mis archivos de prueba (después de haber creado y llenado la cola con prioridad) es:

queue.toString("queue");

Todo bien. El método toString es el siguiente:

public void toString(String fileDot){
    try {
        FileOutputStream file = new FileOutputStream(fileDot); 
        PrintStream Output = new PrintStream(file); 
        Output.print(this.printQueue()); 
        Output.close(); 
        File f = new File(fileDot); 
        String arg1 = f.getAbsolutePath(); 
        String arg2 = arg1 + ".png"; 
        String[] c = {"dot", "-Tpng", arg1, "-o", arg2};
        Process p = Runtime.getRuntime().exec(c); 
        int err = p.waitFor(); 
    }
    catch(IOException e1) {
        System.out.println(e1);
    }
    catch(InterruptedException e2) {
        System.out.println(e2);
    }
}

private String printQueue() throws IOException {
    String g = new String("");
    char c = '"';
    g = g.concat("digraph G {\n");
    if(isEmpty()) 
        g = g.concat("    " + "Empty priority queue.");
    else {
        for(int i = 0; i < lastIndex; i++) {
            if(heap[2 * i] != null) { 
                g = g.concat("" + heap[i].elem + "  (" + heap[i].prior + ")   " + "   " + " -> " + "    " + "" + heap[i * 2].elem + "  (" + heap[i * 2].prior + ")       \n" );
                if(heap[2 * i + 1] != null) 
                    g = g.concat("" + heap[i].elem + "  (" + heap[i].prior + ")   " + "   " + " -> " + "    " + "" + heap[i * 2 + 1].elem + "  (" + heap[i * 2 + 1].prior + ")       \n" ); 
            } 
        } //end for
    } //end else  
    g = g.concat("}");
    return g;   
}

¿Por qué no se genera la imagen .png? Donde me equivoco Por supuesto que instalé Graphviz. Gracias

Simón :

Cuando ejecuté el .dotarchivo anterior doten la línea de comando, obtuve:

$ dot -Tpng queue.dot -oqueue.png
Warning: queue.dot:2: syntax error in line 2 near '('

Por lo tanto, los números entre paréntesis en los nombres de los nodos no son válidos en dotsintaxis. Si los elimina, espero que el .pngarchivo se cree con éxito. Si necesita los números entre paréntesis en su salida, sugiero buscar etiquetas de nodo en la documentación de GraphViz.

También señalaría que toString()no parece un nombre particularmente claro para una función que crea un .pngarchivo, por lo que podría ser aconsejable cambiar el nombre de la función.

Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.

En caso de infracción, por favor [email protected] Eliminar

Editado en
0

Déjame decir algunas palabras

0Comentarios
Iniciar sesiónRevisión de participación posterior

Artículos relacionados

¿Cómo puedo agregar una imagen de fondo (formato de imagen png) a un div con pseudoelement :: before

¿Cómo ejecutar un proceso graphviz con un script de puntos desde un programa Go?

Cómo convertir una matriz de datos de imagen png en un archivo de video

Cómo generar cierto elemento de una fila desde un archivo CSV, Python

Cómo generar un token de portador desde un archivo Kubeconfig mediante programación desde fuera de Kubernetes con Golang

¿Cómo puedo generar una nube de puntos a partir de una imagen de profundidad y una imagen RGB?

¿Cómo puedo generar una nube de puntos a partir de una imagen de profundidad y una imagen RGB?

¿Cómo generar un marco de datos maestro personalizado desde una carpeta de CSV con Pandas?

cómo enviar un objeto de datos y una imagen de archivo desde angularJs a nodeJS

¿Cómo leer código con formato VB desde un archivo de texto?

¿Cómo generar una imagen PNG transparente con LibGDX?

RoR: Cómo sembrar una imagen en mi base de datos desde un archivo local

¿Cómo comparar una columna de un archivo csv con un nombre de imagen en Python?

¿Cómo enviar un archivo binario (formato ebcdic) con bloques variables (cada registro tiene una longitud variable), desde un sistema Unix a un mainframe Unix a través de NDM?

¿Cómo convertir MTIFF a PNG con ImageMagick con un formato de nombre de archivo de salida específico?

Cree una imagen gráfica (png, jpg ..) a partir de un archivo XML con Java

Cómo generar una matriz de formas [1, 28, 28,1] desde un modelo tflite como imagen en Android

Cómo generar un archivo de mapa con platformio

Visualización de una imagen con tkinter llamando a su ruta desde un archivo csv

¿Cómo puedo crear un archivo de imagen PNG a partir de una lista de valores de píxeles en Python?

Cómo simular una instancia de clase exportada desde un archivo con otra instancia de clase

Cargando una imagen a un <img> desde <archivo de entrada>

Cómo componer una imagen acoplable que hace referencia a una imagen existente y agregar un archivo con nombre de argumento

¿Cómo enviar una imagen de Docker con un archivo README a Docker Hub?

Cómo leer una imagen dentro de un archivo zip con PIL / Pillow

¿Cómo empaquetar una imagen de Java con jpackage y moditect en un archivo .app?

¿Cómo generar una sección transversal desde el límite de una nube de puntos 3D?

¿Cómo generar una sección transversal desde el límite de una nube de puntos 3D?

¿Cómo puedo mostrar una imagen de una URL que se está importando desde un archivo csv?