如何使用 RMarkdown 在 beamer 演示文稿中从一段代码创建两个图?

How to create two plots from one chunk of code in a beamer presentation with RMarkdown?

我想根据 RMarkdown 文档中的一大块 R 代码创建多个绘图。输出格式是 beamer-presentation,我通过点击 RStudio 中的编织按钮来编织文档。这是一个最小的例子,其中只创建了一张幻灯片和一个图,而第二个图被省略了。我想看两张幻灯片,每张一张。

---
title: "2 Plots"
output: beamer_presentation
---

# Slide with Plot
```{r cars, echo = TRUE, eval = TRUE}
plot(cars$speed)
plot(cars$dist)
```

如果您想要将图表放在单独的幻灯片上,则必须将图表放在单独的块和幻灯片中:

---
title: "2 Plots"
output:
  beamer_presentation: default
  ioslides_presentation: default
---

# Slide with first Plot
```{r cars, echo = TRUE, eval = TRUE}
plot(mtcars$cyl)
```

# Slide with second Plot
```{r cars2, echo = TRUE, eval = TRUE}
plot(mtcars$hp)
```

您只需输出代码即可在绘图代码之间开始新的幻灯片。例如,

---
title: "2 Plots"
output: beamer_presentation
---

# Slide with Plot
```{r cars, echo = -2, eval = TRUE}
plot(cars$speed)
knitr::asis_output("\n\n# slide 2\n")
plot(cars$dist)
```

请注意,echo = -2 表示不要回显第二条语句,即写出第二张幻灯片标题的语句。

我建议编写一个小函数来结束 asis_output 行,这样输入起来更容易。例如,

# Slide 3
```{r eval = TRUE, echo = c(-1,-3)}
slide <- function(title)
  knitr::asis_output(paste("\n\n#", title, "\n"))
plot(cars$speed)
slide("Slide 4")
plot(cars$dist)
```

如果 asis_output 处于 for 循环的中间,您可能会发现它无法正常工作;有关详细信息,请参阅其帮助页面。