How to generate a PNG image from a point file format using Graphviz

I have a java class that implements a priority queue. Then I have a class test that generates such a graph:

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)       
}

This schedule is saved in a file called "queue".

Now I want this graph to be displayed in a PNG image using Graphviz. Thus, the last call to my test files (after creating and filling the priority queue):

queue.toString("queue");

Good. The toString method is as follows:

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;   
}

Why can't I create a .png image? Where am I mistaken? Of course I installed Graphviz. Thanks

+4
source share
2 answers

.dot dot , :

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

, node dot. , , .png . , node GraphViz.

, toString() , .png, .

+9

dot -O -O. dot -? , :

  • .'format. ( -ofile.)

,

String[] c = {"dot", "-Tpng", arg1, "-o", arg2};

String[] c = {"dot", "-Tpng", arg1, "-O"};
+2

Source: https://habr.com/ru/post/1538130/


All Articles