从java调用gnuplot? (Ubuntu的)

时间:2010-07-07 15:58:20

标签: java gnuplot

我不确定这是否可行,特别是因为Java是通过VM运行的,但是我可以从Java中调用gnuplot吗?也许我可以让Java打开终端并输入

gnuplot
plot ...

等?

5 个答案:

答案 0 :(得分:20)

使用gnujavaplot

答案 1 :(得分:3)

如果你可以让gnuplot从命令行或标准输入中获取所有输入(或从文件读取它)并将其输出写入文件,那么使用ProcessBuilder执行此操作应该没有问题

答案 2 :(得分:1)

这适用于Debian:

String[] s = {"/usr/bin/gnuplot",
              "-e",
              "set term jpeg large size 800,600;set autoscale; set grid;set format y \"%0.f\";set output \"plot.jpg\";set xdata time;set timefmt \"%Y-%m-%d-%H:%M:%S\";set xlabel \"Dates\";set ylabel \"Data transferred (bytes)\";plot \""+x+"\" using 1:2 title \"Total:"+tot+"\" with linespoints;"
             };
try {
    Runtime rt = Runtime.getRuntime();
    Process proc = rt.exec(s);
    InputStream stdin = proc.getErrorStream();
    InputStreamReader isr = new InputStreamReader(stdin);
    BufferedReader br = new BufferedReader(isr);
    String line = null;
    while ((line = br.readLine()) != null)
        System.err.println("gnuplot:"+line);
    int exitVal = proc.waitFor();
    if (exitVal != 0)
        log("gnuplot Process exitValue: " + exitVal);
    proc.getInputStream().close();
    proc.getOutputStream().close();
    proc.getErrorStream().close();
} catch (Exception e) {
    System.err.println("Fail: " + e);
}

答案 3 :(得分:1)

使用JavaGnuplotHybrid库。

它非常轻(仅有3个核心类),可以使用Java和Gnuplot进行混合编程。

  1. 使用Java和Gnuplot进行混合编程
  2. 重量很轻(只有三个核心类)
  3. 使用Gnuplot代码中的标签来执行功能或获取字段'值 在爪哇。
  4. 支持Gnuplot的同步和异步运行 Java的。 (synchronized:你的java程序会等到你关闭 弹出Gnuplot窗口;异步:你的java程序不会 等待。)
  5. 将Gnuplot的错误/正常文本输出捕获到java终端
  6. 从xml文件中读取Gnuplot代码
  7. 支持Gnuplot代码模板。
  8. 更多详情:

    1. 项目页面:https://github.com/mleoking/JavaGnuplotHybrid
    2. 示例:https://github.com/mleoking/JavaGnuplotHybrid/blob/master/javagnuplothybrid/doc/examples.md

答案 4 :(得分:0)

您可以使用“exec”命令启动任何外部应用程序。

http://java.sun.com/javase/6/docs/api/java/lang/Runtime.html

有关示例,请参阅此页面。 http://www.rgagnon.com/javadetails/java-0014.html

编辑:我忘记了ProcessBuilder。 Michael Borgwardt的答案是一个更强大的解决方案。