【问题标题】:ggplot2 figure margins in LaTeX Beamer via KnitrLaTeX Beamer中的ggplot2图形边距通过Knitr
【发布时间】:2013-06-11 16:14:59
【问题描述】:

我目前正在通过 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}

任何帮助将不胜感激,我尝试了我能找到的一切:( 提前致谢!

【问题讨论】:

  • 你找到 knitr 的 documentation 了吗?
  • 您好,jora,我当时确实并且认为“out.width”可以解决问题,但没有成功。不过会再看。感谢您提及。
  • 好吧,您的示例中没有使用 out.width ,并且使用该块选项对我有用。所以你必须提供一个更详细的例子来证明它不起作用。 (无关:您似乎使用的是相当旧的 ggplot2 版本。)
  • 你是对的,我应该使用非弃用代码(更正)。如果你有时间,你能检查一下“out.width”的语法吗?它仍然对我不起作用。
  • 那是因为您还没有阅读文档:“对于 LaTeX 输出,它们可以是 .8\\linewidth、3in 或 8cm”。 (当然不是那些具体的数字,但那些是它应该采用的格式。)

标签: r ggplot2 latex knitr sweave


【解决方案1】:

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

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

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

【讨论】:

  • 嗨一辉,你是对的:我的 RStudio 设置错误。现在一切正常。非常感谢您的回答(以及出色的 knitr)!
猜你喜欢
  • 2023-03-25
  • 2012-03-14
  • 2015-03-16
  • 2013-02-06
  • 2015-02-05
  • 2016-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多