如何使用 rmarkdown::render() 在 html 中渲染 gganimate 图,而不生成不需要的输出

How to render a gganimate graph in html using rmarkdown::render(), without generating unwanted output

我正在尝试使用 r-markdown 文档在 html 中渲染 gganimate() 图。我能够创建 html 文档(尽管下面的简单示例至少需要一分钟)并且 gganimate 图形成功加载到浏览器 (firefox) 中,但是,我在浏览器中得到了一堆不需要的输出。

不需要的输出如下所示:


第 1 帧(1%)

第 2 帧(2%)

第 3 帧(3%)

...

第96帧(96%)

第97帧(97%)

第98帧(98%)

第99帧(99%)

第 100 帧(100%)

正在完成编码...完成!


就像我说的,在这个不需要的输出之后,动画确实显示正确。

我试过弄乱 knitR code-chunk 标题选项。主要是在这里查看这些选项:https://bookdown.org/yihui/rmarkdown/r-code.html

我也试过在这个 post 上建议的解决方案: 具体来说,我试过将 ggplot object 包装在 "invisible".

只需将下面的代码复制到一个Rmarkdown文档中,将这个Rmarkdown文档保存为"example.Rmd",然后,在R控制台中运行:rmarkdown::render("example.Rmd")

---
    title: "Testing gganimate with R Markdown"
    output: html_document
---

```{r message = FALSE}
library(ggplot2)
library(gganimate)
ggplot(mtcars, aes(factor(cyl), mpg)) + 
  geom_boxplot() + 
  # Here comes the gganimate code
  transition_states(
    gear,
    transition_length = 2,
    state_length = 1
  ) +
  enter_fade() + 
  exit_shrink() +
  ease_aes('sine-in-out')
```

一个解决方法是将动画分配给对象 goo <- ggplot(... 并将动画写入文件 anim_save("goo.gif", goo),同时抑制代码块 results = FALSE 的结果。然后在代码块 ![](goo.gif) 之后立即在 markdown 中渲染 gif。

例如

---
title: "Testing gganimate with R Markdown"
output: html_document
---


```{r message = FALSE, warning = FALSE, results = FALSE}
library(ggplot2)
library(gganimate)
goo <- ggplot(mtcars, aes(factor(cyl), mpg)) + 
  geom_boxplot() + 
  # Here comes the gganimate code
  transition_states(
    gear,
    transition_length = 2,
    state_length = 1
  ) +
  enter_fade() + 
  exit_shrink() +
  ease_aes('sine-in-out')

anim_save("goo.gif", goo)
```


![](goo.gif)

我也 运行 遇到了这个问题,所以我决定深入研究代码,看看是否可以完全删除这些消息。

事实证明,输出来自默认用于生成动画的 gifski 包。 gifski 允许您控制它是否输出带有进度标志的这些消息。 gganimate 使用 interactive() 调用的输出来设置此标志。

我不确定为什么 rmarkdown 中的块选项 none 会抑制消息(可能是因为它们是在 C 代码中创建的)但我的解决方法是这个问题不是使用连接到我的编辑器的交互式 R 会话来创建文档,而是使用以下命令从命令行创建文档的最终版本:

R -e "rmarkdown::render('document.Rmd',output_file='document.html')"

编辑:问题中的示例现在在我的桌面(gifski 1.4.3-1、gganimate 1.0.7)上失败了,但它仍然可以在我的笔记本电脑上运行(gifski 1.4.3、gganimate 1.0.7)。桌面错误是

File test_gganimate_files/figure-html/unnamed-chunk-1-1.gif not found in resource path
Error: pandoc document conversion failed with error 99
Execution halted

我尝试使用 versions::install.versions("gifski", "1.4.3") 降级,但错误仍然存​​在。抱歉,我现在没有时间重新创建我确切的其他包版本。


原创:

到 2020 年底,使用 gifski 0.8.6、gganimate 1.0.7,这个问题似乎已经消失。这是我的 devtools::session_info() 在编织问题中的示例之后:

devtools::session_info()
## - Session info ---------------------------------------------------------------
##  setting  value                       
##  version  R version 4.0.3 (2020-10-10)
##  os       Windows 10 x64              
##  system   x86_64, mingw32             
##  ui       RTerm                       
##  language (EN)                        
##  collate  English_United States.1252  
##  ctype    English_United States.1252  
##  tz       Europe/Berlin               
##  date     2020-12-02                  
## 
## - Packages -------------------------------------------------------------------
##  package     * version date       lib source        
##  assertthat    0.2.1   2019-03-21 [1] CRAN (R 4.0.0)
##  callr         3.5.1   2020-10-13 [1] CRAN (R 4.0.3)
##  cli           2.2.0   2020-11-20 [1] CRAN (R 4.0.3)
##  colorspace    2.0-0   2020-11-11 [1] CRAN (R 4.0.3)
##  crayon        1.3.4   2017-09-16 [1] CRAN (R 4.0.0)
##  desc          1.2.0   2018-05-01 [1] CRAN (R 4.0.0)
##  devtools      2.3.2   2020-09-18 [1] CRAN (R 4.0.3)
##  digest        0.6.27  2020-10-24 [1] CRAN (R 4.0.3)
##  dplyr         1.0.2   2020-08-18 [1] CRAN (R 4.0.2)
##  ellipsis      0.3.1   2020-05-15 [1] CRAN (R 4.0.0)
##  evaluate      0.14    2019-05-28 [1] CRAN (R 4.0.0)
##  fansi         0.4.1   2020-01-08 [1] CRAN (R 4.0.0)
##  farver        2.0.3   2020-01-16 [1] CRAN (R 4.0.0)
##  fs            1.5.0   2020-07-31 [1] CRAN (R 4.0.2)
##  generics      0.1.0   2020-10-31 [1] CRAN (R 4.0.3)
##  gganimate   * 1.0.7   2020-10-15 [1] CRAN (R 4.0.3)
##  ggplot2     * 3.3.2   2020-06-19 [1] CRAN (R 4.0.2)
##  gifski        0.8.6   2018-09-28 [1] CRAN (R 4.0.0)
##  glue          1.4.2   2020-08-27 [1] CRAN (R 4.0.2)
##  gtable        0.3.0   2019-03-25 [1] CRAN (R 4.0.0)
##  hms           0.5.3   2020-01-08 [1] CRAN (R 4.0.0)
##  htmltools     0.5.0   2020-06-16 [1] CRAN (R 4.0.2)
##  knitr         1.30    2020-09-22 [1] CRAN (R 4.0.3)
##  labeling      0.4.2   2020-10-20 [1] CRAN (R 4.0.3)
##  lifecycle     0.2.0   2020-03-06 [1] CRAN (R 4.0.0)
##  magrittr      2.0.1   2020-11-17 [1] CRAN (R 4.0.3)
##  memoise       1.1.0   2017-04-21 [1] CRAN (R 4.0.0)
##  munsell       0.5.0   2018-06-12 [1] CRAN (R 4.0.0)
##  pillar        1.4.7   2020-11-20 [1] CRAN (R 4.0.3)
##  pkgbuild      1.1.0   2020-07-13 [1] CRAN (R 4.0.2)
##  pkgconfig     2.0.3   2019-09-22 [1] CRAN (R 4.0.0)
##  pkgload       1.1.0   2020-05-29 [1] CRAN (R 4.0.0)
##  plyr          1.8.6   2020-03-03 [1] CRAN (R 4.0.0)
##  prettyunits   1.1.1   2020-01-24 [1] CRAN (R 4.0.0)
##  processx      3.4.4   2020-09-03 [1] CRAN (R 4.0.2)
##  progress      1.2.2   2019-05-16 [1] CRAN (R 4.0.0)
##  ps            1.4.0   2020-10-07 [1] CRAN (R 4.0.3)
##  purrr         0.3.4   2020-04-17 [1] CRAN (R 4.0.0)
##  R6            2.5.0   2020-10-28 [1] CRAN (R 4.0.3)
##  Rcpp          1.0.5   2020-07-06 [1] CRAN (R 4.0.2)
##  remotes       2.2.0   2020-07-21 [1] CRAN (R 4.0.2)
##  rlang         0.4.9   2020-11-26 [1] CRAN (R 4.0.3)
##  rmarkdown     2.5     2020-10-21 [1] CRAN (R 4.0.3)
##  rprojroot     2.0.2   2020-11-15 [1] CRAN (R 4.0.3)
##  scales        1.1.1   2020-05-11 [1] CRAN (R 4.0.0)
##  sessioninfo   1.1.1   2018-11-05 [1] CRAN (R 4.0.0)
##  stringi       1.5.3   2020-09-09 [1] CRAN (R 4.0.2)
##  stringr       1.4.0   2019-02-10 [1] CRAN (R 4.0.0)
##  testthat      3.0.0   2020-10-31 [1] CRAN (R 4.0.3)
##  tibble        3.0.4   2020-10-12 [1] CRAN (R 4.0.3)
##  tidyselect    1.1.0   2020-05-11 [1] CRAN (R 4.0.0)
##  tweenr        1.0.1   2018-12-14 [1] CRAN (R 4.0.0)
##  usethis       1.6.3   2020-09-17 [1] CRAN (R 4.0.3)
##  vctrs         0.3.5   2020-11-17 [1] CRAN (R 4.0.3)
##  withr         2.3.0   2020-09-22 [1] CRAN (R 4.0.3)
##  xfun          0.19    2020-10-30 [1] CRAN (R 4.0.3)
##  yaml          2.2.1   2020-02-01 [1] CRAN (R 4.0.0)
## 
## [1] C:/R-library
## [2] C:/Program Files/R/R-4.0.3/library