java如何通过RCaller生成R boxplot?

时间:2013-06-21 11:25:39

标签: java r boxplot rcaller

我想通过使用rcaller和java生成一个R boxplot。 我的代码是:

try {
        RCaller caller = new RCaller();
        caller.setRExecutable("/usr/bin/R");
        caller.setGraphicsTheme(new DefaultTheme());

        RCode code = new RCode();
        code.clear();

        File file = code.startPlot();

        code.addRCode("boxplot((1:10),main=\"1-10\")");

        System.out.println(code.toString());
        code.endPlot();

        caller.setRCode(code);
        caller.runAndReturnResultOnline("boxplot(1:10),main=\"1-10\"");
        code.showPlot(file);

但它不会继续运行代码caller.runAndReturnResultOnline("boxplot(1:10),main=\"1-10\"");

我尝试使用下面的代码,可以绘制R图。它们之间有什么区别?

try {
        RCaller caller = new RCaller();
        caller.setRExecutable("/usr/bin/R");
        caller.setGraphicsTheme(new DefaultTheme());

        RCode code = new RCode();
        code.clear();

        double[] numbers = new double[] { 1, 4, 4, 5, 6, 10 };
        code.addDoubleArray("x", numbers);

        File file = code.startPlot();
        System.out.println(file.toString());

        code.addRCode("plot.ts(x)");
        System.out.println(code.toString());
        code.endPlot();

        caller.setRCode(code);
        caller.runAndReturnResultOnline("plot.ts(x)");
        code.showPlot(file);

1 个答案:

答案 0 :(得分:0)

替换你的行:

code.addRCode("boxplot((1:10),main=\"1-10\")");

由此:

code.addRCode("boxplot(c(1:10),main='1-10')");

或者像第二个例子(工作版)一样,你可以从java中提取x向量并替换这一行:

caller.runAndReturnResultOnline("plot.ts(x)");

通过

caller.runAndReturnResultOnline("boxplot(x)");

PS:我没有java测试。