Graphviz uma boa opção para gerar gráficos!
Algum tempo estive trabalhando com o Graphviz para gerar diagramas para um projeto. Desde então trabalhei com um projeto em ruby onde encontrei uma ótima opção para interface desse software: http://github.com/glejeune/Ruby-Graphviz ,
Para quem ainda não conhece o graphviz ele é muito simples e não tem dificuldade em entendê-lo. Vejamos um simples hello world:
digraph G {Hello->World}
utilizando o dot geramos a saida em png:
~$ echo “digraph G {Hello->World}” | dot -Tpng >hello.png
Em meus projetos tive a necessidade de utilizar uma interface pra gerar a estrutura do arquivo dot deixando assim de se preocupar com a parte tecnica e focando em nodes edges, graphs..
Com o projeto http://github.com/glejeune/Ruby-Graphviz vejamos o exemplo do hello world.
import com.couggi.javagraphviz.Digraph;
import com.couggi.javagraphviz.Graph;
import com.couggi.javagraphviz.GraphvizEngine;
import com.couggi.javagraphviz.Node;
public class HelloWorldSample {
public static void main(String[] args) {
// define a graph with the Digraph Type.
Graph graph = new Digraph("G");
// create nodes with names
Node hello = graph.addNode("Hello");
Node world = graph.addNode("World");
// create a edge with hello node and world node.
graph.addEdge(hello, world);
// create the Graphviz engine to the graph
GraphvizEngine engine = new GraphvizEngine(graph);
// define the type of the output
engine.type("png");
// define the file name of the output.
engine.toFilePath("helloworld.png");
// generate output.
engine.output();
}
}
