从 .RMD 中的代码块中删除空白 space(将 knitr 编译为 Beamer pdf)

Removing blank space from code chunks in .RMD (compiling knitr to Beamer pdf)

我正在 RStudio(版本 0.99.903)的 R Markdown .Rmd 文件中创建幻灯片,输出设置为 PDF (Beamer)。在几张幻灯片上,我想在文本下方或单独在幻灯片上插入一个图表,生成图表的代码在屏幕上不可见。然而,尽管我尝试了很多方法,但在文本结尾和图形开头之间总是有一个 space,如果我没有设置 echo=FALSE,大概是代码块出现的位置。例如:

---
title: "Untitled"
author: "Math 35"
date: "October 14, 2016"
output: beamer_presentation
---

```{r setup, echo=FALSE, include=FALSE}
knitr::knit_hooks$set(mysize = function(before, options, envir) {
  if (before) 
    return(options$size)
})
knitr::opts_chunk$set(size='\small')
knitr::opts_chunk$set(warning=FALSE)
knitr::opts_chunk$set(message=FALSE)
knitr::opts_chunk$set(fig.align='center')
```

## Recap from Last Time: Continuous Random Variables
-- Uniform Random Variable  $X\sim  U(a,b)$
$$f_X(x) = \frac{1}{b-a}, a \leq x \leq b$$
$$E[X] = \frac{a+b}{2}$$
$$Var(X) = \frac{(b-a)^2}{12}$$
```{r, echo=FALSE, fig.height=3, fig.width=3.5}
density <- dunif(x=seq(from=0, to=6, by=0.01), min=1, max=5)
plot(seq(from=0, to=6, by=0.01), density, col="black", type="l", ylim=c(0, 0.5), lwd=4,  xlab="X ~ U(1,5)")
  lines(c(3,3), c(0,dunif(3, min=1, max=5)), col="red", lwd=2)
  text(2.9, 0.1, "E[X]=(1+5)/2 = 3", col="purple")
```

当我在 R Studio 中 "Knit PDF" 时,生成的幻灯片在文本和图形之间有很大的空白 space。因此,该图不适合幻灯片。我想删除这个空白 space 以便所有内容都可以放在幻灯片上。

以下是我尝试过但无效的所有代码块选项:

我也看过:

我现在已经花了两个小时试图弄清楚如何让一个数字正确显示在一张幻灯片上。任何帮助将不胜感激。

您可以使用 par(),但部分问题来自乳胶方面。使用 \begin{center}\end{center} 环境添加垂直 space。你可以尝试修改相关的 knitr 钩子,或者简单地手动添加居中指令,

\centering
```{r, echo=FALSE, fig.height=1.5, fig.width=3.5}
density <- dunif(x=seq(from=0, to=6, by=0.01), min=1, max=5)
par(mar=c(2.5,2.5,0.5,0.5), mgp=c(1.5, 0.5, 0), bg="grey95")
plot(seq(from=0, to=6, by=0.01), density, col="black", type="l", ylim=c(0, 0.5), lwd=4,  xlab="X ~ U(1,5)")
  lines(c(3,3), c(0,dunif(3, min=1, max=5)), col="red", lwd=2)
  text(2.9, 0.1, "E[X]=(1+5)/2 = 3", col="purple")
  ```

感谢所有回复的人。我设置了有效的代码块选项 out.width='65%'(同时将 yaxis 更改为从 0 扩展到 0.3 而不是从 0 扩展到 0.5):

---
title: "Lecture 5 - The Normal Distribution"
output:
  beamer_presentation: 
    highlight: null
---
```{r setup, echo=FALSE, include=FALSE}
knitr::knit_hooks$set(mysize = function(before, options, envir) {
  if (before) 
    return(options$size)
})
knitr::opts_chunk$set(size='\small')
knitr::opts_chunk$set(echo=TRUE)
knitr::opts_chunk$set(warning=FALSE)
knitr::opts_chunk$set(message=FALSE)
knitr::opts_chunk$set(fig.align='center')
```
## Recap from Last Time: Continuous Random Variables
-- Uniform Random Variable  $X\sim  U(a,b)$
$$f_X(x) = \frac{1}{b-a}, a \leq x \leq b$$
$$E[X] = \frac{a+b}{2}$$
$$Var(X) = \frac{(b-a)^2}{12}$$

```{r, echo=FALSE,out.width='65%'}
density <- dunif(x=seq(from=0, to=6, by=0.01), min=1, max=5)
plot(seq(from=0, to=6, by=0.01), density, col="black", type="l", ylim=c(0, 0.3), lwd=4,  xlab="X ~ U(1,5)")
  lines(c(3,3), c(0,dunif(3, min=1, max=5)), col="red", lwd=2)
  text(2.9, 0.1, "E[X]=(1+5)/2 = 3", col="purple")
```