13

我正在尝试创建一个包含使用 ggplot2 完成的一些图形的 sweave 报告。虽然我正在寻找一些长期的环境——我在这里只使用一个简单的 .Rnw 文件,它只包含代码和情节

 \documentclass[a4paper]{article}
 \SweaveOpts{echo=FALSE}
 \usepackage{a4wide}

  \begin{document}

  \begin{figure}[htbp]
  \begin{center}
 <<>>=
 library(ggplot2)
 x=rnorm(100)
 qplot(x)

 @
 \caption{My Graph}
 \end{center}
  \end{figure}
\end{document}

不幸的是,没有创建图表,我只得到一个损坏的 .pdf 和 .eps 文件。虽然我得到了一个不错的 .tex 文件,除了图形之外它似乎可以工作。我使用以下基本代码来创建它:

 Sweave("myfile.Rnw")

我刚刚在网上发现了一些较旧的帖子,讨论了透明度和 sweave / ggplot2 的问题,但没有任何帮助。我还尝试了轻松的套餐,但也没有帮助。顺便说一句,有没有关于 decumar 包的消息?

4

3 回答 3

19

qplot()生成对象,而不是图形输出。当你运行它时它可能看起来像它,但那是因为没有赋值,R 会自动打印qplot(). 要将其集成到 Sweave 中,要么环绕print()qplot()要么将输出分配qplot()给某物,然后将其包裹在print().

...
<<fig = T, echo = F>>=
 library(ggplot2)
 x=rnorm(100)
 p <- qplot(x)
 print(p)
@
...

那应该行得通。ggplot2我一直在我的 sweave 文档中使用图形。

于 2010-07-21T22:39:28.877 回答
3

您必须将其包裹起来print()以使其在 sweave 中工作。

于 2010-07-22T18:29:20.873 回答
1

实际上,虽然之前的两个答案都是正确的,但您的问题是另外一回事。

您需要确保整个代码块位于页面的左侧(除了函数中的缩进)。同样,我不知道为什么,但这会导致 Sweave 出现问题。

在确保所有代码(以及代码块的页眉/页脚)都位于页面左侧(并添加打印语句)之后,您的示例对我有用。

顺便说一句,我今天了解到您可以在 sweave 文档中围绕您的代码创建一个环境(我不知道,这会节省我很多时间)。好旧的stackoverflow,即使在你回答问题时也会教你一些新东西!

希望这可以帮助。

于 2011-09-23T15:55:58.780 回答