4

Java、JavaGD、およびRを使用して単一のグラフを正常に描画しました。このチュートリアルに従いました。

これで、CSVファイルを読み取り、いくつかの計算を行うRスクリプトができました。最後に、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")
.
.
.
4

1 に答える 1

2

を使用して、初期化された JRI について R インスタンスに伝える必要があります。.jengine()そうしないと、ウィンドウのサイズを変更するなどのコールバックを発行できません。空白のウィンドウについては、使用するコードを提供する必要があります。

( rJava/JRI/JavaGD 関連の問題について議論するには、 stats-rosuda-develを使用することをお勧めします。)

于 2012-01-04T01:41:09.090 に答える