我正试着从一个函数中获取一个多图pdf。在R中,这给了我一个三页PDF:
pdf(file='test.pdf', onefile=TRUE)
lapply(1:3, 'plot')
dev.off()
使用OpenCPU:
$ curl http://localhost:6977/ocpu/library/base/R/lapply -H 'Content-Type: application/json' -d '{"X":[1,2,3], "FUN":"plot"}'
/ocpu/tmp/x0dc3dad0/R/.val
/ocpu/tmp/x0dc3dad0/graphics/1
/ocpu/tmp/x0dc3dad0/graphics/2
/ocpu/tmp/x0dc3dad0/graphics/3
/ocpu/tmp/x0dc3dad0/stdout
/ocpu/tmp/x0dc3dad0/source
/ocpu/tmp/x0dc3dad0/console
/ocpu/tmp/x0dc3dad0/info
我可以获得任何单独的页面作为一个单一页PDF文件,但不能作为一个合并文件。
有两种可能的工作--周旋,并非没有问题:
par(mfrow)
、layout()
或类似的机制,尽管这最终会创建一个怪物图像(我正在处理我的代码中的三个以上的图像)。tempfile
,动态创建Rmd文件,在会话中返回文件名(尚未测试),并使用OpenCPU对Rmd文件的处理。不幸的是,这现在使用了LaTeX的几何图形和页面编号(有解决办法)。还有其他方法可以做到吗?
发布于 2014-04-02 19:22:50
问得好。OpenCPU使用evaluate
捕获图形,它分别存储每个图形。API本身不支持将多个图形合并到一个文件中。我会亲自在应用程序层(即使用非R工具)进行这种PDF
后处理,但是在API中支持这一点可能是有用的。
一些建议:
getwd()
)的任何文件也可以通过API获得。因此,您可以做的一件事是在R代码中手动创建组合的pdf
文件,并将其保存到工作目录中,然后通过opencpu下载。recordedPlot
对象,除了png
、pdf
和svg
之外,还可以检索图形为rds
或rda
。因此,您可以编写一个R函数,从API下载recordedPlot
对象,然后打印它。不确定这在用例中是否有帮助。https://stackoverflow.com/questions/22817833
复制相似问题