【问题标题】:avoid displayed figures during sweave/pgfsweave compilation避免在 sweave/pgfsweave 编译期间显示图形
【发布时间】:2011-11-26 03:34:30
【问题描述】:

当使用 sweave/pgfsweave 编译时,每次在 R 中创建图形时,它都会显示在图形窗口中(在 sweave 编译过程中)。这在许多情况下很有帮助,因为我可以看到在编译文档时这些数字的样子。

但是当我通过 ssh 编译一个大文件时,这可能会很慢。有没有办法告诉 sweave/pgfsweave 在编译过程中避免显示图形(尽管我仍然希望在最终的 pdf 文档中显示图形)。

【问题讨论】:

    标签: r sweave


    【解决方案1】:

    对于交互式会话,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

    【讨论】:

    • 我推荐(2),因为它是独立的(所以总是可重现的); (1) 不好,(3) 更糟。
    • @Yihui -- 感谢您的补充。另外(虽然有点离题)非常感谢您在 formatR 包上所做的工作。
    【解决方案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

    【讨论】:

      【解决方案3】:

      如果您从命令行而不是在交互式会话中切换,则不会在交互式图形窗口中生成图形。

      您可以从命令行运行 R,只需键入 R CMD Sweave mydoc.Rnw 或通过批处理文件或大型项目的生成文件。我已经开始为我的许多 sweave 文档使用 makefile,因为它可以处理依赖关系,可以自行清理等等。

      【讨论】:

        【解决方案4】:

        一个选项可能是

        <<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}
        

        【讨论】:

          猜你喜欢
          • 2017-03-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多