Kon*_*lph 3 plot r output-redirect
我想将所有绘图自动重定向到文件(原因:请参见下文)。是否有实现这一目标的非hacky方法?
缺乏的是,我居然不害怕压倒一切的内置功能,我是绝望。我能想到的最简单的方法是挂接到基本的绘图窗口创建函数pdf(…),然后调用,然后挂接到绘图完成函数并dev.off()在那里调用。
但是这些功能是什么?通过调试我已经初步确定dev.hold,并dev.flush-但其实这真的普遍?我可以使用这些功能吗?我无法用R.utils' 覆盖它们,reassignInNamespace因为它们已锁定,仅将同名函数放入全局名称空间中是行不通的(它们被忽略plot)。
那么,为什么我要做那么恐怖的事情?
因为我在远程服务器上工作,尽管尽了最大的努力,并且在我们的系统支持下进行了很长时间的调试会话,所以我无法使X11转发可靠地工作。无法预览图使我的工作流程效率极低。我已经放弃了让X11正常工作的尝试,因此现在在public_html文件夹中创建PDF ,只是刷新浏览器。
这非常有效-除非总是用包围您的绘图功能调用确实很烦人并且非常耗时pdf(…) … dev.off(),尤其是在您希望与合作者开会时快速创建绘图的交互式会话中。实际上,这确实很烦人,他们(可以理解)对此没有耐心。
现在,我正在用以下函数定义帮助自己:
preview <- function (.expr, ...) {
on.exit(dev.off())
pdf(PREVIEW_FILE_NAME, ...)
eval(substitute(.expr))
}
Run Code Online (Sandbox Code Playgroud)
像这样使用:
preview(plot(1:100, rnorm(100) * 1:100))
Run Code Online (Sandbox Code Playgroud)
没关系。但是,此工作流程是会议中真正的瓶颈,我希望摆脱preview通话以尽可能简化流程。
有机会吗?
如果设置,options(device=FUN)则图形设备功能FUN将成为新的默认图形设备,当创建绘图且尚未打开该设备时,它将打开。
因此,一种选择是编写一个函数,该函数使用所需的文件名和选项(可能在中)调用pdf或png其他图形设备,然后将该函数设置为选项中的默认值。您可能需要使用一种,或者以完成当前打印(直到关闭装置或去如果你想添加任何东西到当前图上一个新的阴谋R没有敲定)。onefile=FALSEpdfdev.offplot.newframe
如果您永远不会添加到地块,则可以使用addTaskCallback来dev.off自动呼叫。可能还有其他挂钩可以用来完成。