从java调用gnuplot?(ubuntu)

从java调用gnuplot?(ubuntu),java,gnuplot,Java,Gnuplot,我不确定这是否可行,特别是因为Java是通过VM运行的,但是我可以从Java内部调用gnuplot吗?也许我可以让Java打开一个终端并输入 gnuplot plot ... 等?如果您可以让gnuplot从命令行或标准输入(或从文件读取)获取所有输入,并将其输出写入文件,那么使用它应该没有问题。您可以使用“exec”命令启动任何外部应用程序 有关一些示例,请参见本页。 编辑:我忘了ProcessBuilder。Michael Borgwardt的答案是一个更强大的解决方案。使用。这对De

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

gnuplot
plot ...

等?

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

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

有关一些示例,请参见本页。

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

使用。

这对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);
}

使用JavaGnuplotHybrid库

它非常轻量级(只有3个核心类),支持使用Java和Gnuplot进行混合编程

  • Java与Gnuplot的混合编程
  • 重量非常轻(只有三个核心类)
  • 在Gnuplot代码中使用标记执行函数或获取字段值 在Java中
  • 支持在中同步和异步运行Gnuplot JAVA(已同步:您的java程序将等待,直到您关闭 弹出的Gnuplot窗口;异步化:您的java程序不会 等等。)
  • 捕获Gnuplot到java终端的错误/正常文本输出
  • 从xml文件读取Gnuplot代码
  • 支持Gnuplot代码模板
  • 有关详细信息:

  • 项目页面:
  • 示例:

  • 不久前我也做过类似的事情。我不清楚细节,但我可以确认Gnuplot很乐意从文件中提取所有输入。这很有脚本性。当我看到这个答案时,我只是懒洋洋地笑了起来。:)@kevincline SourceForge说“上次更新:3小时前”。@mcandre:我在重复我与作者的通信。最新版本是在1月15日发布的,时隔很长一段时间,所以我猜它又开始活动了?它有maven存储库吗?我不想给我的项目添麻烦。