global.par = TRUE 在 knitr for bg in RSweave doc 中不起作用

global.par = TRUE not working in knitr for bg in RSweave doc

我需要更改由我的 R Sweave 文档生成的所有 tiff 图像的背景,并且遇到了与此处描述的相同的问题:

但是使用 par(bg = ),据推测它正在根据评论工作。

MWE:

\documentclass{article}
\begin{document}

<<setup, cache = FALSE>>=
opts_chunk$set(dev = c('pdf','tiff'))
opts_knit$set(global.par = TRUE)
par(bg='cyan')
@

<<>>=
plot (3,3)
@

\end{document}

(我不被允许发表评论,否则我会坚持下去 post。)

我也尝试使用一个钩子,基于这里的例子: https://github.com/yihui/knitr/blob/master/inst/examples/knitr-graphics.Rnw

knit_hooks$set(par=function(before, options, envir){
if (before) par(bg='cyan')
})

但这也没有用。

唯一可行的是在每个块中设置参数,例如:

<<test, dev = 'tiff'>>=
par(bg = 'cyan')
plot(3,2)
@

(我实际上想要白色背景,但用颜色更容易测试。顺便说一句,我不选择使用 TIFF。)

对正在发生的事情有什么想法吗?

提供的 MWE 并不意味着 global.par 不适用于 bg。绘图不使用指定背景颜色的原因是 global.par = TRUE 仅影响 后续 块。

Knitr's settings must be set in a chunk before any chunks which rely on those settings to be active. [source]

您不能依赖全局选项应用到您设置的块中。

以下示例演示了在后面的块中设置背景颜色会使情节使用它:

\documentclass{article}
\begin{document}

<<setup, cache = FALSE>>=
opts_knit$set(global.par = TRUE)
@

<<>>=
par(bg='cyan')
@

<<>>=
plot (3,3)
@

\end{document}