使用sweave / pgfsweave进行编译时,每次在R中创建一个图形时,它都会在图形窗口中显示(在sweave编译过程中)。这在许多情况下很有用,因为我可以看到在编译文档时数字的样子。
但是当我通过ssh编译一个大文档时,这可能会很慢。有没有办法告诉sweave / pgfsweave以避免在编译期间显示图形(我仍然想要最终的pdf文档中的图形)。
答案 0 :(得分:4)
对于交互式会话,figs.only
Sweave选项可控制此行为。要仅将图形绘制到目标图形文件(并且不到控制台图形窗口),请设置figs.only=TRUE
。
如RweaveLatex
帮助文件中所述:
figs.only:逻辑('FALSE')。默认情况下,每个图块都会运行 一次,然后重新运行每种选定类型的图形。那 将打开第一个数字的默认图形设备 chunk并使用该设备进行首次评估 后续的块。如果此选项为true,则为数字块 仅针对每种选定类型的图形运行,其中a 新图形设备打开然后关闭。
与其他Sweave选项一样,您可以设置此选项:(1)用于当前编译(例如Sweave("example.Rnw", figs.only=TRUE)
;(2)在.Rnw
文件中,使用\SweaveOpts{figs.only=TRUE}
;或者(3)作为全局默认值,将SWEAVE_OPTIONS="figs.only=TRUE"
放入,例如$R_HOME/etc/Renviron.site
答案 1 :(得分:2)
figs.only
是正确的方法,我也想提一下R中的默认图形设备:
现在您可以看一下:http://yihui.name/en/2010/12/a-special-graphics-device-in-r-the-null-device/
在R 2.14.1(尚未发布)之后,您将能够将默认设备设置为空PDF设备,既安全又快速:https://github.com/yihui/knitr/issues/9
答案 2 :(得分:1)
如果您从命令行而不是在交互式会话中进行扫描,则不会在交互式图形窗口中生成图形。
只需键入R CMD Sweave mydoc.Rnw
或通过批处理文件或大型项目的makefile,即可从命令行运行R.我已经开始在我的许多sweave文档中使用makefile,因为它处理依赖关系,可以清理自己以及更多。
答案 3 :(得分:0)
一个选项可能是
<<label=myplotlabel, fig=TRUE, include=FALSE>>=
graph code
@
然后
\begin{figure}[h]
\includegraphics[width=6cm, height=6cm]{myplotlabel}
\caption{My Plot}
\label{fig:label}
\end{figure}