0

我有一个包含数百万个数据点的图,所以我希望先制作一个png然后包含它。png但是,我在编译时遇到了无法包含的问题。

\documentclass{article}
\usepackage{graphicx}

\begin{document}

\begin{figure}[htb]
<<fig=TRUE,echo=FALSE>>=
png('test.png')
plot(rnorm(100))
dev.off()
@
\includegraphics{test}
\end{figure}

\end{document}

R在调用上述 MWE 之后,我将像往常一样进入我的控制台并调用:

Sweave("report.Rnw")
texi2pdf("report.tex")

除非我的Rnw文件中有上述代码,否则它一直有效。错误信息:

Error in texi2dvi(file = file, pdf = TRUE, clean = clean, quiet = quiet,  : 
  Running 'texi2dvi' on 'report.tex' failed.
LaTeX errors:
!pdfTeX error: pdflatex (file ./report-019.pdf): PDF inclusion: requir
ed page does not exist <0>
 ==> Fatal error occurred, no output PDF file produced!
> Sweave("report.Rnw") ; texi2pdf("report.tex")
Writing to file report.tex
4

4 回答 4

1

这是错误的,因为你的块在fig=TRUE那里有但没有产生任何 Sweave 图。

于 2013-10-18T15:59:49.963 回答
1

首先,创建一个函数来输出您的 .png(或 .pdf 或其他)文件。我喜欢为此创建一个单独的文件夹(images_plot如下)。

for (i in x) {
  # set a real filename here, instead of 'i'
  pdf(paste('images_plot/', i, '.pdf', sep = ''), width = 10, height = 5)
  plot(x)
  dev.off()
}

然后用Tex来展示它:

<<echo = FALSE, results=tex>>=
for (i in x)
{
  cat('\\begin{figure}[h]\n')
  file = paste('images_plot/', i, '.pdf', sep = '')
  cat('\\includegraphics{', file, '}\n', sep = '')
  cat('\\end{figure}\n')
}
@

我就是这样做的,希望对你有帮助!

于 2013-10-18T15:39:34.873 回答
0

如果您可以选择使用knitrinstead Sweave,那么您可以dev="png"在块选项中指定。如果您指定参数,它甚至会为您设置图形环境fig.cap

\documentclass{article}

\begin{document}

<<test,dev="png",fig.cap="My figure",fig.pos="htb">>=
plot(rnorm(100))
@

\end{document}
于 2014-05-22T15:15:55.143 回答
-1

抱歉这么晚了,我要做的就是使用这个回显选项:

\documentclass[11pt]{article}
\usepackage{graphicx, verbatim}

\begin{document}

<<fig=TRUE,echo=FALSE>>=
boxplot(rnorm(100))
@

\end{document}
于 2015-10-23T20:44:49.767 回答