假设我有一个功能
plotSingle <- function(x) {
plot(x)
}
我想在Sweave
的循环中使用它来生成20页,每页有1个绘图。例如:
\begin{figure}[htb]
\caption{}
\centering
<<fig=TRUE,echo=FALSE>>=
for(loop in 1:20) {
plotSingle(loop)
cat('\\newpage')
}
@
\end{figure}
然而,这只会在1页上生成1个图,而不是我在之后的20页20个。
如何调整上述Sweave
代码以实现我的目标?
答案 0 :(得分:0)
您应该添加plot.new
或其别名frame()
,而不需要cat('\\newpage')
<<,fig=TRUE,echo=FALSE>>=
plotSingle <- function(x) {
plot.new() ## ~ frame()
plot(0)
}
for(i in 1:3) plotSingle(mtcars)
@
带布局的编辑:
我认为knitr在找到相同的情节陈述时会做一些优化。那个
<<,echo=FALSE>>=
plotSingle <- function(x) {
layout(matrix(1:3,nrow=3))
plot(0,main=x) ## the 3 plots statement here are different
plot(1,main=x) ## you can just change the title also and it will works
plot(2,main=x) ## keep in mind to give knitr different plot statement.
}
for(i in 1:5) plotSingle(i) ## you have also to give different iodex here
## plotSingle(0) will not work for example.
@