通过Knitr在LaTeX Beamer中获得ggplot2数字边距

时间:2013-06-11 16:14:59

标签: r ggplot2 latex knitr sweave

我目前正在通过Knitr玩R和LaTeX。

尝试使用投影仪做一个非常简单的幻灯片,我遇到了一个小问题。当我使用\ includegraphics方法插入图像时,它很好地采用与文本长度相同的宽度。然而,当我使用R代码生成ggplot2图表时,图表宽度似乎限制在文本长度的2/3左右(对于信息量较大的图表来说这是非常小的)。即使设置了非常宽的图形宽度,也会发生这种情况......

有没有办法删除R数字似乎添加的所有额外边距?

下面的代码重现了这种情况。

\documentclass{beamer} 

\begin{document}
\SweaveOpts{concordance=TRUE}

\begin{frame}[fragile]{A sample slide}

Some text to show text length, Some text to show text length, Some text to show text length, Some text to show text length.

\begin{center}

<<figureExample, echo=False, fig=true, out.width=15>>=
library(ggplot2)
qplot(displ, hwy, data = mpg, colour = factor(cyl)) + 
    theme(plot.background = element_rect(fill='green', colour='red')) +
    theme(plot.margin = unit(c(0,0,0,0), "cm"))
@

\end{center}
\end{frame}

\end{document}

任何帮助都会非常感激,我尝试了所有我能找到的东西:( 提前谢谢!

1 个答案:

答案 0 :(得分:3)

正如@joran在评论中提到的那样,\SweaveOpts{concordance=TRUE}不应该存在。如果RStudio坚持将其添加到您的文档中,我对您的RStudio设置持高度怀疑态度 - 您似乎使用Sweave而不是knitr来编译此文档(在这种情况下,如果您有,则RStudio会添加此项检查了一致性选项)。转到Tools -> Options -> Sweave,看看您是否已将默认Sweave选项更改为knitr

Sweave默认情况下将图形宽度全局设置为.8\textwidth,这可以解释您看到的问题。

另请注意echo=False, fig=true无效knitr chunk options。您需要使用TRUE/FALSE。对于out.width,您最好给它一个明确的单位,例如incm