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

时间:2018-12-20 21:46:58

标签: r r-markdown knitr gganimate

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

不需要的输出如下:


框架1(1%)

框架2(2%)

框架3(3%)

...

第96帧(96%)

第97帧(97%)

第98帧(98%)

第99帧(99%)

框架100(100%)

最终完成编码...完成!


就像我说的那样,在不需要的输出之后,动画确实可以正确显示。

我尝试弄乱knitR代码块标题选项。通常在这里查看以下选项:https://bookdown.org/yihui/rmarkdown/r-code.html

我还尝试了这篇文章中建议的解决方案:suppress console output in r markdown, but keep plot具体来说,我尝试将ggplot对象包装为“不可见”。

只需将以下代码复制到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')
```

3 个答案:

答案 0 :(得分:2)

一种解决方法是将动画分配给对象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)

答案 1 :(得分:0)

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

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

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

  

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

答案 2 :(得分:0)

使用gifski 0.8.6和gganimate 1.0.7到2020年末,这个问题似乎已经消失。这是我编织问题中示例后的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