首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaPlot和gnuplot

JavaPlot和gnuplot
EN

Stack Overflow用户
提问于 2012-02-18 00:04:38
回答 5查看 6.7K关注 0票数 3

我正在拼命地尝试让Java和gnuplot表现得更好。我已经开始使用JavaPlot并将jar添加到类路径中(使用Eclipse)。

我还下载了gnuplot,并把它放在了一个安全的地方。

第一个问题,JavaPlot给出的所有例子都假设你把gnuplot放在了正确的位置,我不知道这是在哪里。因此,他们的示例如下:

代码语言:javascript
复制
import com.panayotis.gnuplot.JavaPlot;

public class test {
    public static void main(String[] args) {
        JavaPlot p = new JavaPlot();
        p.addPlot("sin(x)");
        p.plot();
    }
}

只有在将gnuplot添加到类路径中时才能工作,有没有关于它可能在哪里以及如何添加的想法?

不过不用担心,因为您可以在JavaPlot的构造函数中定义gnuplot的位置,如下所示:

代码语言:javascript
复制
import com.panayotis.gnuplot.JavaPlot;

public class test {
    public static void main(String[] args) {
        JavaPlot p = new JavaPlot("D:/Eclipse/gnuplot/binary/pgnuplot.exe");
        p.addPlot("sin(x)");
        p.plot();
    }
}

这做了一些事情,如果你速度很快,你可以看到一个图形出现(正确地,可以看到正弦波),然后立即消失。我在网上读到,在实际的gnuplot应用程序中,这在使用Windows时是很常见的,并且必须在绘图后添加'-persist‘。幸运的是,JavaPlot也有一个函数可以做到这一点:

代码语言:javascript
复制
p.setPersist(true);

但在我的情况下,它什么也做不了。那么第二个问题,有没有人以前用过gnuplot、JavaPlot和Windows764位,并且知道怎么做?从我的谷歌,我了解到pgnuplot是正确的.exe运行?

我遗漏了什么?我做错了什么?

EN

回答 5

Stack Overflow用户

发布于 2012-02-20 12:56:42

我想我可能有一个解决办法,因为我今天在Windows7(虽然这里是32位)上访问JavaPlot时遇到了同样的事情。是的,pgnuplot.exe是您想要的,但是如果您不想显式地使用setPersist,那么您不需要显式地使用它,因为JavaPlot会为您做这件事。我所要做的就是浏览源代码并注释掉一行代码。

在GnuPlotParameters中,我看到了以下代码

代码语言:javascript
复制
/* Finish! */
bf.append("quit").append(NL);

这是198-199行。然后绘图窗口将保持打开状态。现在,这样做也是为了让gnuplot保持开放。如果你不介意,你可以这样看你的图表。我还没有想出如何关闭gnuplot,同时让绘图窗口保持打开状态。

编辑:

也许更合适的方法是不注释掉第199行,而使用下面的代码:

代码语言:javascript
复制
bf.append("pause -1").append(NL);

/* Finish! */
bf.append("quit").append(NL);

以这种方式,暂停对话框出现。这使您可以查看绘图。当您关闭该对话框时,所有内容都会消失。

票数 1
EN

Stack Overflow用户

发布于 2013-03-06 04:06:57

我使用eclipse进行调试,并且碰巧正在使用这个包。我想出了怎么解决这个问题。将以下内容添加到代码中。由于某些原因,setPersist(true)似乎无法工作。

代码语言:javascript
复制
p.set("term", "x11 persist");
票数 0
EN

Stack Overflow用户

发布于 2013-03-12 17:07:29

尝尝这个

代码语言:javascript
复制
try {
    Runtime rt = Runtime.getRuntime();
    Process proc = rt.exec("D:/Projet/X-Gnuplot_4.6.0_rev6/Bin/gnuplot/bin/gnuplot.exe");

    java.io.OutputStream opStream = proc.getOutputStream();
    PrintWriter gp = new PrintWriter(new BufferedWriter(new OutputStreamWriter(opStream)));
    gp.println("plot sin(x); pause mouse close;\n");  
    gp.close();

    int exitVal = proc.waitFor();
    System.out.println("Exited with error code "+exitVal);
} catch(Exception e) {
    System.out.println(e.toString());
    e.printStackTrace();
}

对我来说很管用

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9331548

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档