r -将列表中的图导出到单独幻灯片中的ppt,不包括索引

9lowa7mx  于 2023-04-18  发布在  其他
关注(0)|答案(1)|浏览(117)

我已经准备了一个.rmd文件,其中包含下面的代码,我正试图使用.rmd生成一个.ppt,其中我将根据我拥有的列表的长度生成多个幻灯片,其中包含情节。
我已经尝试了相关问题中的大多数解决方案,但没有一个能够解决我的问题。我尝试了walkfor循环,使用invisible函数,但没有一个能达到预期的效果。

---
title: "test1"
output: powerpoint_presentation
date: "2023-04-12"
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE)
library(purrr)
library(ggplot2)
library(dplyr)

dt <- iris %>%
  group_by(Species) %>%
  tidyr::nest() %>%
  mutate(plots = pmap(list(data, Species, Species),
                      ~ ..1 %>% ggplot() + geom_point(aes(Sepal.Width, Sepal.Length)) + ggtitle(paste0(..2, "-", ..3))
                      )
         )

Slide with R Output

walk(dt$plots, print)
walk(dt$plots, print)
print(dt$plots)

最后3个块生成所需的格式(没有文本的图像),但它们仅返回单个幻灯片中的第一个图。
下面的块生成所有3张幻灯片,但索引文本在幻灯片上可见(其想法是使图表在幻灯片上显示完整尺寸,但不显示文本)
invisible( print(dt$plots))
mrphzbgm

mrphzbgm1#

一个选项是在使用cat循环绘图并设置块选项results='asis'时创建一个新的幻灯片。还需要通过\n\n添加两个换行符:

---
title: "test1"
output: 
  powerpoint_presentation:
    keep_md: true
date: "2023-04-12"
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE)
library(purrr)
library(ggplot2)
library(dplyr)

dt <- iris %>%
  group_by(Species) %>%
  tidyr::nest() %>%
  mutate(plots = pmap(list(data, Species, Species),
                      ~ ..1 %>% ggplot() + geom_point(aes(Sepal.Width, Sepal.Length)) + ggtitle(paste0(..2, "-", ..3))
                      )
         )
iwalk(dt$plots, function(x, y) {
  cat("## Slide with R output\n\n")
  cat("Plot ", y, "\n\n")
  print(x)
  cat("\n\n")
})

![](https://i.stack.imgur.com/mweIu.png)

**编辑**如果您只想要一张包含图表的幻灯片,而不需要文本或标题,则可以执行以下操作:

注:您还可以在chunk选项中设置`fig.width`来更改图的大小,例如使用`fig.width=9`将宽度设置为9英寸(根据我的检查,这是放置图表的占位符的宽度)。
iwalk(dt$plots, function(x, y) {
  cat("---\n\n")
  print(x)
  cat("\n\n")
})

相关问题