我在Sweave中的大块:
<<fig=TRUE,echo=FALSE>>=
for(i in 1:10) {
plot(rep(i,10))
dev.new()
}
@
在生成的pdf中,我只得到一个图(从第一次迭代开始)。我想打印所有10个地块。我究竟做错了什么?我尝试用dev.new()
和frame()
替换plot.new()
,但没有发生任何事情。
答案 0 :(得分:10)
正如@rawr建议最简单的解决方案是切换到knitr
(根本没有理由不这样做!)并将fig.keep="all"
放入代码块选项中(如果您切换到knitr
,则不再需要fig=TRUE
...包括数字自动生效,fig.keep="none"
是fig=FALSE
的类似物
或者,如果你想坚持使用香草Sweave,请检查Sweave manual p。 17:
A.9从一个图形块创建多个数字不起作用
考虑您想要在类似于
的循环中创建多个图形
<<fig=TRUE>>
for (i in 1:4) plot(rnorm(100)+i)
@
这当前不起作用,因为Sweave每个图块只允许一个图形。原因很简单,Sweave在执行代码之前会打开一个postscript设备并将其关闭 然后。如果你需要在循环中绘图,你必须按照
的顺序编程
<<results=tex,echo=FALSE>>=
for(i in 1:4){
file=paste("myfile", i, ".eps", sep="")
postscript(file=file, paper="special", width=6, height=6)
plot(rnorm(100)+i)
dev.off()
cat("\\includegraphics{", file, "}\n\n", sep="")
}
@