【问题标题】:How-to create plots in R using JRI如何使用 JRI 在 R 中创建绘图
【发布时间】:2014-09-13 12:08:55
【问题描述】:

这基本上与这个问题相反: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();
}

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

【问题讨论】:

  • 你能给我们看看Java代码吗?
  • @YehoshahatSchellekens:用代码更新了我的问题!谢谢。
  • 您的概念应该有效,尝试找出 Java 是否将“样本”数据正确传递给 R。类似的事情在这里工作正常:stackoverflow.com/questions/24493113/…,我认为您可能对方向有一些问题的“\”,因为它在 R 中是相反的
  • 似乎适用于 png/jpg,但不适用于 pdf/postscript 设备。可能是系统问题:我正在运行 Ubuntu 14.04 / R 3.0.2。

标签: r plot rjava jri


【解决方案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 文件。

【讨论】:

    猜你喜欢
    • 2011-12-12
    • 1970-01-01
    • 2015-03-16
    • 2021-01-10
    • 2011-11-02
    • 2021-08-17
    • 2019-04-28
    • 2020-03-28
    • 1970-01-01
    相关资源
    最近更新 更多