【问题标题】:How to render a gganimate graph in html using rmarkdown::render(), without generating unwanted output如何使用 rmarkdown::render() 在 html 中呈现 gganimate 图,而不产生不需要的输出
【发布时间】:2019-05-21 10:28:01
【问题描述】:

我正在尝试使用 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')
```

【问题讨论】:

  • 从 RStudio 中的 rmd 文件编织时,我无法复制。它可以按需要工作。
  • 嗯,也许这与我机器上的一些全局 knit r 选项有关......或者我必须更新一些包......
  • 刚刚更新了我所有的包,绝对不是这样
  • 我会将我的代码和输出添加到作为答案,以便您进行比较。
  • 所以当我使用 knitr 按钮时它可以工作 :),我将从现在开始这样做。但是是的,当你使用 rmarkdown::render() 时,你会得到不需要的输出

标签: r r-markdown knitr gganimate


【解决方案1】:

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

【讨论】:

  • 聪明的解决方案,有没有一种有效的方法可以将 gganimate 的情节渲染成一个包含媒体控制面板(播放、暂停、下载)的 html?
【解决方案2】:

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

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

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

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

【讨论】:

    【解决方案3】:

    编辑:问题中的示例现在在我的桌面(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") 降级,但错误仍然存​​在。抱歉,我目前没有时间重新创建确切的其他软件包版本。


    原文:

    使用 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
    

    【讨论】:

    • 你有没有让它直接在 Rmd 块中渲染?如果是,您能否发布有效的代码(包括块选项)?谢谢!
    • @rmf 见编辑。我使用的代码正是问题文本中的代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-20
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 2018-06-17
    • 2020-07-27
    • 1970-01-01
    相关资源
    最近更新 更多