如何使用 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
我正在尝试使用 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 上建议的解决方案:
只需将下面的代码复制到一个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