【问题标题】:How to create two plots from one chunk of code in a beamer presentation with RMarkdown?如何在使用 RMarkdown 的投影仪演示文稿中从一大块代码创建两个图?
【发布时间】:2020-06-17 22:14:56
【问题描述】:

我想从 RMarkdown 文档中的一大块 R 代码创建多个绘图。输出格式是 beamer-presentation,我通过点击 RStudio 中的 knit 按钮来编织文档。这是一个最小的示例,其中仅创建了一张带有一张图的幻灯片,而省略了第二张图。我想看两张幻灯片,每张都有一个情节。

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

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

【问题讨论】:

    标签: r r-markdown knitr beamer


    【解决方案1】:

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

    ---
    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 循环的中间,您可能会发现它无法正常工作;有关详细信息,请参阅其帮助页面。

    【讨论】:

    • 太棒了!非常感谢。
    【解决方案2】:

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

    ---
    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)
    ```
    

    【讨论】:

    • 感谢 stefan,我希望有一种解决方案可以从一段代码在两张幻灯片上创建两个图。要在连续幻灯片上显示更长的图表列表,将每个图表放入单独的块中会降低代码的可读性。
    猜你喜欢
    • 2010-12-13
    • 2017-12-07
    • 1970-01-01
    • 2023-03-27
    • 2011-03-02
    • 1970-01-01
    • 2021-05-24
    • 1970-01-01
    • 2019-08-03
    相关资源
    最近更新 更多