我正在制作一份R Sweave报告。我在sweave pdf输出中对ggplot维度有一些困难。我的代码:
\documentclass{report}
\begin{document}
demo demo demo demo demo demo demo demo demo demo demo demo
\begin{figure}[h]
\begin{center}
<<echo=FALSE, fig=TRUE>>=
require(ggplot2)
df <- data.frame(a= c(1:10), b = c (10:1))
ggplot(data = df, aes(a, b)) + geom_line()
@
\caption{caption}
\end{center}
\end{figure}
demo demo demo demo demo demo demo demo demo demo demo demo
\end{document}
现在我想控制pdf输出中的绘图宽度和高度尺寸。实际上我想保持高度不变,但要使宽度与文字宽度相同。
感谢您的时间。
答案 0 :(得分:6)
您可以尝试使用knitr
包。 (完全披露:我是此软件包代码库的次要贡献者),它允许您指定out.width
,它控制图的宽度。因此,您可以将代码块重写为
<<echo=FALSE, out.width = '0.9\\textwidth'>>=
suppressMessages(require(ggplot2))
df <- data.frame(a= c(1:10), b = c (10:1))
ggplot(data = df, aes(a, b)) + geom_line()
@
答案 1 :(得分:4)
非常感谢,拉姆纳特。 FWIW,我在这里粘贴完整的代码:
\documentclass{report}
\begin{document}
demo demo demo demo demo demo demo demo demo demo demo demo
\begin{figure}[h]
<<echo=FALSE, fig.align='center', out.width='0.9\\textwidth', message=FALSE>>=
require(ggplot2)
df <- data.frame(a= c(1:10), b = c (10:1))
ggplot(data = df, aes(a, b)) + geom_line()
@
\caption{caption}
\end{figure}
demo demo demo demo demo demo demo demo demo demo demo demo
\end{document}
我添加了选项fig.align='center'
以使图形居中(您不需要在LaTeX中使用\begin{center}
和\end{center}
,这有时可能会使文档中的意外内容居中对齐),{ {1}}来禁止来自message=FALSE
的消息。
您可以通过以下方式编译文档:
require(ggplot2)
答案 2 :(得分:1)
查看R-Forge上提供的AFLP包中的ggsave.latex()函数
install.packages("AFLP", repos="http://R-Forge.R-project.org")
然后您的Sweave文件简化为此
\documentclass{report}
\begin{document}
demo demo demo demo demo demo demo demo demo demo demo demo
<<echo=FALSE, results = tex>>=
require(ggplot2)
ggsave.latex <- AFLP:::ggsave.latex
df <- data.frame(a= c(1:10), b = c (10:1))
p <- ggplot(data = df, aes(a, b)) + geom_line()
ggsave.latex(p, filename = "myplot.pdf", width = 2, height = 10, caption = "Your caption")
@
demo demo demo demo demo demo demo demo demo demo demo demo
\end{document}