2

这基本上与这个问题相反:如何使用 R、Java 和 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();
}

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

4

1 回答 1

1

如果您使用的是 Linux 的某些变体(例如 Ubuntu),则解决方案是使用cairo_pdf而不是pdf

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

这里记录了这种方法的缺点:R: Cairographics-based SVG, PDF and PostScript Graphics Devices,但至少会生成非空的 pdf 文件。

于 2017-03-12T23:26:47.960 回答