Как создать графики в R, используя JRI
По сути, это обратный вопрос: как построить график с использованием R, Java и JRI?, Я хочу создать сюжет в R из Java-программы и сохранить его на жестком диске. Речь не идет об отображении графика R в окне Java. Я использую JRE как часть пакета rJava. Выполнение расчетов в R из Java работает просто отлично.
Выполнение этого в 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 ответ
Если вы используете какой-либо вариант Linux (например, Ubuntu), решение заключается в использовании cairo_pdf
вместо pdf
:
cairo_pdf(file="qqplot.pdf")
x <- rnorm(100)
qqnorm(x); qqline(x)
dev.off()
Есть недостатки этого подхода, документированные здесь: R: SVG, основанные на Cairographics графические устройства PDF и PostScript, но по крайней мере создаются непустые файлы PDF.