GnuPlot através de java

3 respostas
F

Pessoal, estou fazendo um software científico que precisa de gerar gráficos, e a única ferramenta (Gratuita) que proporciona este gráficos é o GnuPlot.
Preciso gerar estes gráficos através do meu software, mas não estou conseguindo.
Alguem já fez isso com o gnuplot?

3 Respostas

F
Cosegui algum progresso, mas não é suficiente, executo este código e ele gera o gráfico, mas o gráfico fecha sozinho logo depois que é aberto... vejam o código:
public void executa() {
        try{
        Process p = Runtime.getRuntime().exec("C:\\Program Files\\gnuplot\\bin\\pgnuplot.exe");
        outputStream = p.getOutputStream(); //process p
        PrintWriter gp = new PrintWriter(new BufferedWriter(new OutputStreamWriter(outputStream)));
        gp.print("plot sin(x)");
        gp.flush();
        gp.close();
        }catch(Exception x){
        System.out.println(x.getMessage());
        }

    }
Alguem pode me ajudar?
F

é pessoal depois de muito tentar, consegui algo, durante aqueles nanos segundos que o gnuplot fica aberto temos que enviar comandos para que ele salve os gráficos em imagens, não consegui fazer isso abrindo o visualisador de gráficos dele, mas consegui salvar as imagens dos gráficos, vejam ai um exemplo para a posteridade:

public void exec(String[] comando) {
        try {
            Process p = Runtime.getRuntime().exec("C:\\Program Files\\gnuplot\\bin\\pgnuplot.exe");
            OutputStream outputStream = p.getOutputStream(); //process p
            PrintWriter gp = new PrintWriter(new BufferedWriter(new OutputStreamWriter(outputStream)));

            for(int i = 0;i<comando.length;i++){
                gp.println(comando[i]);
                gp.flush();
            }
            gp.close();
        } catch (Exception x) {
            System.out.println(x.getMessage());
        }
    }

    public static void main(String[] args) {
        GnuPlotComandos ece = new GnuPlotComandos();
        String[] teste = new String[7];
        teste[0] = "reset\n";
        teste[1] = "set term png transparent\n";
        teste[2] = "set output \"d:/testando.png\"\n";
        teste[3] = "set multiplot\n";
        teste[4] = "plot sin(x)\n";
        teste[5] = "unset multiplot\n";
        teste[6] = "exit";
        
        ece.exec(teste);
    }
Se algem consegir visualizar isso já no visualisador do gnuplot posta ai! Obrigado
M

Eai meu, acho que ja faz alguns tempo e não deva mais precisar disto, mas eu baixei alguns frameworks para usar gnuplot
dentre eles achei o http://sourceforge.net/projects/jgp/
procurei por comandos dentro das classes do projeto e consegui fazer aparecer o gráfico

final Process proc = Runtime.getRuntime().exec("caminhognuplot\\pgnuplot.exe");
PrintWriter pw = new PrintWriter(proc.getOutputStream()); 
pw.println("comandos");
pw.println("pause -1 'Press ENTER to continue...' \n");
pw.close();

A magia esta no pause -1, ele vai criar algo equivalente ao um JOpitonPane de javaswing e aguarda tu fazer alguma coisa.

Abraços
Mário Valmir

Criado 4 de março de 2010
Ultima resposta 30 de abr. de 2012
Respostas 3
Participantes 2