【发布时间】:2011-11-26 03:34:30
【问题描述】:
当使用 sweave/pgfsweave 编译时,每次在 R 中创建图形时,它都会显示在图形窗口中(在 sweave 编译过程中)。这在许多情况下很有帮助,因为我可以看到在编译文档时这些数字的样子。
但是当我通过 ssh 编译一个大文件时,这可能会很慢。有没有办法告诉 sweave/pgfsweave 在编译过程中避免显示图形(尽管我仍然希望在最终的 pdf 文档中显示图形)。
【问题讨论】:
当使用 sweave/pgfsweave 编译时,每次在 R 中创建图形时,它都会显示在图形窗口中(在 sweave 编译过程中)。这在许多情况下很有帮助,因为我可以看到在编译文档时这些数字的样子。
但是当我通过 ssh 编译一个大文件时,这可能会很慢。有没有办法告诉 sweave/pgfsweave 在编译过程中避免显示图形(尽管我仍然希望在最终的 pdf 文档中显示图形)。
【问题讨论】:
对于交互式会话,figs.only Sweave 选项控制此行为。要将图形仅绘制到目标图形文件(不到控制台图形窗口)设置figs.only=TRUE。
如RweaveLatex 帮助文件中所述:
figs.only:逻辑('FALSE')。默认情况下,每个图形块都运行 一次,然后为每个选定的图形类型重新运行。那 将为第一个图形打开一个默认图形设备 大块并使用该设备进行所有的第一次评估 随后的块。如果此选项为真,则图形块 仅针对每种选定类型的图形运行,其中一个 新的图形设备打开然后关闭。
与其他 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
【讨论】:
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
【讨论】:
如果您从命令行而不是在交互式会话中切换,则不会在交互式图形窗口中生成图形。
您可以从命令行运行 R,只需键入 R CMD Sweave mydoc.Rnw 或通过批处理文件或大型项目的生成文件。我已经开始为我的许多 sweave 文档使用 makefile,因为它可以处理依赖关系,可以自行清理等等。
【讨论】:
一个选项可能是
<<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}
【讨论】: