2010-07-21 47 views
13

我想创建一个包含一些图形与ggplot2完成的sweave报告。虽然我在寻找,从长远来看一下环境 - 我只是用一个简单的.Rnw此文件只包含的代码,不幸的是,图中未创建情节sweave和ggplot2:完全没有生成PDF

\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包的消息?

+1

Decumar在过去的几天里一直处于沉重的发展阶段,实际上可能已经接近可以发布的阶段。 – hadley 2010-07-22 19:05:04

+0

耶!这是我的一天。我真的很期待测试它! – 2010-07-22 19:41:04

回答

19

qplot()产生对象,而不是图形输出。它可能看起来就像它在运行时那样,但是这是因为没有分配,R会自动打印qplot()的输出。要将它集成到Sweave中,请将print()包装在qplot()左右,或将qplot()的输出分配给某个东西,然后将其包装在print()中。

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

这应该工作。我始终在我的sweave文档中使用ggplot2图形。

+0

thx人。开始总是最难的......从来没有想过这样,因为我之后只用了qplot()和ggsave。 – 2010-07-21 23:40:37

3

你必须围绕print()包装它,使其工作在sweave。

1

其实,虽然以前的答案都是正确的,但你的问题是另一回事。

您需要确保整个代码块位于页面的左侧(除函数中的Iundentation外)。再次,我不知道为什么,但这会给Sweave带来问题。

确保所有代码(以及代码块的页眉/页脚)位于页面左侧(并添加了打印语句)后,您的示例适用于我。顺便说一句,我今天知道你可以在你的代码中创建一个在sweave文档中的环境(我没有意识到这点,并且会为我节省很多时间)。良好的旧的计算器,即使你回答一个问题,也能教会你新的东西!

希望这会有所帮助。