Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Java、R和JavaGD绘制多个图形的问题?_Java_R_Rjava - Fatal编程技术网

使用Java、R和JavaGD绘制多个图形的问题?

使用Java、R和JavaGD绘制多个图形的问题?,java,r,rjava,Java,R,Rjava,我已经使用Java、JavaGD和R成功地绘制了一个图形 现在,我有一个R脚本,它读取一个CSV文件,进行一些计算。最后,它绘制了8个不同的图形。当我使用Java/JavaGD运行这个脚本时,只有第1个和第8个绘图可见。第二到第七个窗口为“非活动”窗口,为空。我使用的代码与上述链接/教程中的代码完全相同。所以我猜有些东西被覆盖了 我怎样才能把它们画在合适的窗户上?此外,如果重新调整大小,第一个窗口将变为空白。如何解决这个问题 如果需要,请不要犹豫要求澄清。我不确定我对这个问题解释得有多好 非常感

我已经使用Java、JavaGD和R成功地绘制了一个图形

现在,我有一个R脚本,它读取一个CSV文件,进行一些计算。最后,它绘制了8个不同的图形。当我使用Java/JavaGD运行这个脚本时,只有第1个和第8个绘图可见。第二到第七个窗口为“非活动”窗口,为空。我使用的代码与上述链接/教程中的代码完全相同。所以我猜有些东西被覆盖了

我怎样才能把它们画在合适的窗户上?此外,如果重新调整大小,第一个窗口将变为空白。如何解决这个问题

如果需要,请不要犹豫要求澄清。我不确定我对这个问题解释得有多好

非常感谢任何帮助/阅读材料

更新1:

目前,我正在使用以下代码:

public static void main(String[] args) {
    // TODO Auto-generated method stub
    Rengine re;
    String[] dummyArgs = new String[1];
    dummyArgs[0] = "--vanilla";
    re = new Rengine(dummyArgs, false, null);
    re.eval("library(JavaGD)");

    // This is the critical line: Here, we tell R that the JavaGD() device that
    // it is supposed to draw to is implemented in the class MyJavaGD. If it were
    // in a package (say, my.package), this should be set to
    // my/package/MyJavaGD1.
    re.eval("Sys.putenv('JAVAGD_CLASS_NAME'='test/MyJavaGD1')");

    re.eval("JavaGD()");
//      re.eval("plot(c(1,5,3,8,5), type='l', col=2)");
//      re.eval("source(\"C:\\Documents and Settings\\username\\My Documents\\Test Data\\BoxPlot.r\");");
        re.eval("source(\"C:\\\\Documents and Settings\\\\username\\\\My Documents\\\\sampleRScript.R\")");
        re.end();
        System.out.println("Done!");
    }
脚本的一部分:

par(las=2,mfrow=c(2,1))
PlotData <- subset (m4, select=c(LotNo,def,cavity,Lift), subset=(cavity=="1"))
boxplot(Lift ~ def, data=PlotData, main="Number 1")
hist(PlotData$Lift,50, main="", xlab="Lift", ylab="Frequency")
win.graph()
par(las=2,mfrow=c(2,1))
PlotData <- subset (m4, select=c(LotNo,def,cavity,Lift), subset=(cavity=="2"))
boxplot(Lift ~ def, data=PlotData, main="Number 2")
hist(PlotData$Lift,50, main="", xlab="Lift", ylab="Frequency")
win.graph()
par(las=2,mfrow=c(2,1))
PlotData <- subset (m4, select=c(LotNo,def,cavity,Lift), subset=(cavity=="3"))
boxplot(Lift ~ def, data=PlotData, main="Number 3")
hist(PlotData$Lift,50, main="", xlab="Lift", ylab="Frequency")
.
.
.
par(las=2,mfrow=c(2,1))

PlotData您需要使用
.jengine()
将初始化的JRI告知R实例,否则它无法发出回调,例如调整窗口大小。对于空白窗口,您需要提供您使用的代码


(您可能希望使用stats rosuda-devel讨论rJava/JRI/JavaGD相关问题。)

我们在链接中看到了绘制一个绘图的一些代码,但您没有显示用于绘制8个绘图的代码。试着把它归结为一小段R代码,它再现了你的问题。这将使帮助我们更容易。@PaulHiemstra:我使用的代码与链接中的代码相同。我已经更新了问题。请看一看。您能提供一些关于.jengine()的详细信息吗?任何示例或链接?这是rJava中的命令-请参见
?.jengine
。建议使用类似于
re.eval(“{library(rJava);.jengine()}”)
。你能发布你的
sampleScript.R
代码让我们看看空白问题吗?。。这是不完整的——什么是代码> Win?GORD()?<代码>??您可以忽略<代码>…<代码>,并将其视为完整的。同一组4行(从
par(
hist(
)在每次
win.graph();
)之后重复,总共8次,因此我删除了重复。如前所述,它绘制了8个图。
win.graph()
是一个用于打开另一个图形窗口的R函数。它不是我自己编写的,因此我不确定是否可以共享整个脚本。如果您需要更多说明,请告诉我。好吧,然后问作者(为什么它不起作用)。它不是R的一部分-为什么不使用
dev.new()
??