knitr - 如何对齐代码和并排绘图

时间:2012-06-14 10:08:35

标签: r knitr

是否有一种简单的方法(例如,通过块选项)来获取块的源代码及其并排生成的图,如第8页(以及其他)this document

我尝试使用out.width="0.5\\textwidth", fig.align='right',这使得绘图正确占据页面的一半并与右边对齐,但源代码显示在其上,这是正常行为。 我想把它放在情节的左侧。

由于

示例代码:

<<someplot, out.width="0.5\\textwidth", fig.align='right'>>=
plot(1:10)
@

3 个答案:

答案 0 :(得分:8)

嗯,这最终比我预期的更棘手。

在LaTeX方面,adjustbox package可以很好地控制并排框的对齐,就像在tex.stackexchange.com上很好地展示in this excellent answer一样。所以我的一般策略是用LaTeX代码包装指定的R chunk的格式化,整理,着色输出:(1)将它放在adjustbox环境中; (2)在其右侧的另一个调整框环境中包含块的图形输出。为了实现这一点,我需要将 knitr 的默认块输出钩子替换为文档(2)部分<<setup>>=中定义的自定义块输出钩子。块。

(1)的{​​{1}}部分定义了一个块挂钩,可用于临时设置R的全局选项(特别是此处为<<setup>>=) - 基础。 See here只提供一个问题和答案,仅仅处理这个设置的一部分。

最后,第options("width")节定义了一个knitr&#34;模板&#34;,每次生成并排的代码块和数字时需要设置的一组选项。一旦定义,它允许用户通过在块的标题中键入(3)来触发所有必需的操作。

opts.label="codefig"

enter image description here

答案 1 :(得分:4)

我看到了3种可能性

  • 对于beamer演示文稿,我也会选择\begin{columns} ... \end{columns}
  • 如果只有一个这样的情节:Minipages
  • Here我使用了一个表(列代码和列结果)。 (此示例为“普通”Sweave)

对于所有三个,块选项将具有include = FALSE,并且该图将“手动”放置在\includegraphics[]{}的正确位置。

答案 2 :(得分:2)

您可以在&#39; textplot&#39;中显示文字。来自PerformanceAnalytics或gplots。

(小)缺点:据我所知,没有语法突出显示可能。

示例代码:

```{r fig.width=8, fig.height=5, fig.keep = 'last', echo=FALSE}
suppressMessages(library(PerformanceAnalytics))
layout(t(1:2))
textplot('plot(1:10)')
plot(1:10)
```