r221 - in trunk/src: main/java/org/nuiton/j2r test/java/org/nuiton/j2r
Author: jcouteau Date: 2010-06-28 10:13:07 +0200 (Mon, 28 Jun 2010) New Revision: 221 Url: http://nuiton.org/repositories/revision/nuiton-j2r/221 Log: Add graphics generation Modified: trunk/src/main/java/org/nuiton/j2r/REngine.java trunk/src/main/java/org/nuiton/j2r/REngineAbstract.java trunk/src/main/java/org/nuiton/j2r/RProxy.java trunk/src/test/java/org/nuiton/j2r/JNITest.java trunk/src/test/java/org/nuiton/j2r/NetTest.java Modified: trunk/src/main/java/org/nuiton/j2r/REngine.java =================================================================== --- trunk/src/main/java/org/nuiton/j2r/REngine.java 2010-06-27 06:35:53 UTC (rev 220) +++ trunk/src/main/java/org/nuiton/j2r/REngine.java 2010-06-28 08:13:07 UTC (rev 221) @@ -288,4 +288,8 @@ * @throws RException */ void saveRData(String filename) throws RException; + + public void plot(String filename, String x, String y, String type, + String main, String sub, String xlab, String ylab, + String asp) throws RException; } //REngine Modified: trunk/src/main/java/org/nuiton/j2r/REngineAbstract.java =================================================================== --- trunk/src/main/java/org/nuiton/j2r/REngineAbstract.java 2010-06-27 06:35:53 UTC (rev 220) +++ trunk/src/main/java/org/nuiton/j2r/REngineAbstract.java 2010-06-28 08:13:07 UTC (rev 221) @@ -325,4 +325,64 @@ public Boolean isAutoCommit() { return this.autocommit; } + + /** + * @param filename + * @param x + * @param y + * @param type + * @param main + * @param sub + * @param xlab + * @param ylab + * @param asp + */ + public void plot(String filename, String x, String y, String type, + String main, String sub, String xlab, String ylab, + String asp) throws RException { + + eval("jpeg(\"" + filename + ".jpg\")"); + + String Rinstruction = "plot("; + + if ((x != null) && (!x.isEmpty())) { + Rinstruction += x; + } else { + throw new IllegalArgumentException("x argument must be filled"); + } + + if ((y != null) && (!y.isEmpty())) { + Rinstruction += ",y=" + y; + } + + if (type != null) { + Rinstruction += ",type=\"" + type + "\""; + } + + if (main != null) { + Rinstruction += ",main=\"" + main + "\""; + } + + if (sub != null) { + Rinstruction += ",sub=\"" + sub + "\""; + } + + if (xlab != null) { + Rinstruction += ",xlab=\"" + xlab + "\""; + } + + if (ylab != null) { + Rinstruction += ",ylab=\"" + ylab + "\""; + } + + if (asp != null) { + Rinstruction += ",asp=" + asp + "\""; + } + + Rinstruction += ")"; + + eval(Rinstruction); + eval("dev.off()"); + + } } Modified: trunk/src/main/java/org/nuiton/j2r/RProxy.java =================================================================== --- trunk/src/main/java/org/nuiton/j2r/RProxy.java 2010-06-27 06:35:53 UTC (rev 220) +++ trunk/src/main/java/org/nuiton/j2r/RProxy.java 2010-06-28 08:13:07 UTC (rev 221) @@ -659,5 +659,15 @@ } engine.loadRData(filename); } + + @Override + public void plot(String filename, String x, String y, String type, String main, String sub, String xlab, String ylab, String asp) throws RException { + if (engine == null) { + log.fatal("The R Proxy is not initialized. An error probably " + + "occured during the initialization."); + } + engine.plot(filename, x, y, type, main, sub, xlab, ylab, asp); + } + } //RProxy Modified: trunk/src/test/java/org/nuiton/j2r/JNITest.java =================================================================== --- trunk/src/test/java/org/nuiton/j2r/JNITest.java 2010-06-27 06:35:53 UTC (rev 220) +++ trunk/src/test/java/org/nuiton/j2r/JNITest.java 2010-06-28 08:13:07 UTC (rev 221) @@ -41,8 +41,10 @@ import org.junit.Assert; import org.junit.Before; import org.junit.Test; +import org.nuiton.j2r.jni.RJniEngine; import org.nuiton.j2r.types.RDataFrame; import org.nuiton.j2r.types.RList; +import org.rosuda.JRI.Rengine; import java.io.File; @@ -423,7 +425,14 @@ @Test public void testGraphics() throws Exception { - engine.eval("plot(seq(1,10))"); + + File workingDirectory = new File("/tmp"); + engine.setwd(workingDirectory); + + engine.plot("test","seq(1,10)",null,null,null,null,null,null,null); + File pictureFile = new File("/tmp/test.jpg"); + Assert.assertTrue(pictureFile.exists()); + //engine.eval("plot(seq(1,10))"); } } // JNITest Modified: trunk/src/test/java/org/nuiton/j2r/NetTest.java =================================================================== --- trunk/src/test/java/org/nuiton/j2r/NetTest.java 2010-06-27 06:35:53 UTC (rev 220) +++ trunk/src/test/java/org/nuiton/j2r/NetTest.java 2010-06-28 08:13:07 UTC (rev 221) @@ -383,7 +383,14 @@ @Test public void testGraphics() throws Exception { - engine.eval("plot(seq(1,10))"); + + File workingDirectory = new File("/tmp"); + engine.setwd(workingDirectory); + + engine.plot("test", "seq(1,10)", null, null, null, null, null, null, null); + File pictureFile = new File("/tmp/test.jpg"); + Assert.assertTrue(pictureFile.exists()); + //engine.eval("plot(seq(1,10))"); }
Le Mon, 28 Jun 2010 10:13:07 +0200 (CEST), jcouteau@users.nuiton.org a écrit :
} + + /** + * @param filename + * @param x + * @param y + * @param type + * @param main + * @param sub + * @param xlab + * @param ylab + * @param asp + */ + public void plot(String filename, String x, String y, String type, + String main, String sub, String xlab, String ylab, + String asp) throws RException { + + eval("jpeg(\"" + filename + ".jpg\")"); + + String Rinstruction = "plot("; + + if ((x != null) && (!x.isEmpty())) { + Rinstruction += x; + } else { + throw new IllegalArgumentException("x argument must be filled"); + } + + if ((y != null) && (!y.isEmpty())) { + Rinstruction += ",y=" + y; + } + + if (type != null) { + Rinstruction += ",type=\"" + type + "\""; + } + + if (main != null) { + Rinstruction += ",main=\"" + main + "\""; + } + + if (sub != null) { + Rinstruction += ",sub=\"" + sub + "\""; + } + + if (xlab != null) { + Rinstruction += ",xlab=\"" + xlab + "\""; + } + + if (ylab != null) { + Rinstruction += ",ylab=\"" + ylab + "\""; + } + + if (asp != null) { + Rinstruction += ",asp=" + asp + "\""; + } + + Rinstruction += ")"; + + eval(Rinstruction); + eval("dev.off()"); + + } }
Non, on évite d'écrire ce genre de code avec des concatenation de string a fouason . Il faut utiliser un StringBuilder. -- Tony Chemit -------------------- tél: +33 (0) 2 40 50 29 28 email: chemit@codelutin.com http://www.codelutin.com
participants (2)
-
jcouteau@users.nuiton.org -
Tony Chemit