如何使用JRI在R中创建绘图

时间:2014-07-22 15:19:49

标签: r plot rjava jri

这基本上与这个问题相反:How to plot a graph using R, Java and JRI?。我想从Java程序在R中创建一个绘图并将其存储在硬盘上。关于在java窗口中显示R图是。我使用JRE作为rJava包的一部分。从java执行R中的计算工作正常。

在R中执行此操作会产生一个很好的情节:

pdf(file="qqplot.pdf")
x <- rnorm(100)
qqnorm(x); qqline(x)
dev.off()

尽管如此,从Java执行相同的文件会生成相同的文件,但它是空的。这是java代码:

private String createNormQQPlot(double[] samples, File filename){

    try{
        // Pass array to R
        engine.assign("samples", samples);
        engine.eval(String.format("pdf(file='%s')",filename.getPath()));
        engine.eval("qqnorm(samples)");
        engine.eval("qqline(samples)");
        engine.eval("dev.off()");
    }catch(Exception e) {
        e.printStackTrace();
        return "";
    }
    return filename.getPath();
}

对此有任何想法都非常感谢!

1 个答案:

答案 0 :(得分:1)

如果您使用某些Linux版本(例如Ubuntu),解决方案是使用pdf代替cairo_pdf(file="qqplot.pdf") x <- rnorm(100) qqnorm(x); qqline(x) dev.off()

new = []
for l in myList:
    new.append([x.split(',') for x in l])

print new

此处记录的此方法存在缺陷:R: Cairographics-based SVG, PDF and PostScript Graphics Devices,但至少会产生非空的pdf文件。