我正在尝试创建一个包含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包装上有什么新闻吗?
答案 0 :(得分: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
图形。
答案 1 :(得分:3)
你必须将它包裹在print()
以使其在sweave中工作。
答案 2 :(得分:1)
实际上,虽然之前的两个答案都是正确的,但您的问题还是别的。
您需要确保整个代码块位于页面的左侧(除了函数中的iundentation)。再一次,我不知道为什么,但这会导致Sweave出现问题。
确保所有代码(以及代码块的页眉/页脚)位于页面左侧(并添加打印语句)后,您的示例适用于我。
顺便说一句,我今天了解到你可以在sweave文档中创建一个围绕你的代码的环境(我不知道,这将节省我很多时间)。好旧的stackoverflow,即使你回答问题也会教你一些新东西!
希望这有帮助。