【发布时间】:2012-01-03 21:22:42
【问题描述】:
我已经使用 Java、JavaGD 和 R 成功绘制了一个图形。我遵循了 this 教程。
现在,我有一个 R 脚本,它读取 CSV 文件并进行一些计算。最后,它绘制了 8 个不同的图表。当我使用 Java/JavaGD 运行这个脚本时,只有第 1 个和第 8 个图可见。第 2 到第 7 个在“非活动”窗口上,它们是空白的。我使用与上述链接/教程中完全相同的代码。所以我猜有些东西被覆盖了。
如何在适当的窗口上绘制它们?此外,如果重新调整大小,第一个窗口将变为空白。如何解决这个问题?
如有需要,请随时要求澄清。我不确定我对问题的解释有多好。
非常感谢任何帮助/阅读材料。
更新 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")
.
.
.
【问题讨论】:
-
我们在链接中看到一些用于绘制一个图的代码,但您没有显示用于绘制 8 个图的代码。尝试将其归结为一小段重现您的问题的 R 代码。这会让帮助我们变得更容易。
-
@PaulHiemstra:我使用的代码与链接中的代码相同。我已经更新了这个问题。请看一看。