Как визуализировать gganimate граф в html, используя rmarkdown :: render (), без генерации нежелательного вывода - PullRequest
0 голосов
/ 21 декабря 2018

Я пытаюсь визуализировать графики gganimate () в формате html, используя документ r-markdown.Я могу создать 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

Я также пробовал решения, предложенные в этом посте: подавить вывод консоли в уценке r, но сохранить заговор В частности, я пробовал перенособъект ggplot в "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')
```

Ответы [ 2 ]

0 голосов
/ 22 августа 2019

Я тоже столкнулся с этой проблемой, поэтому я решил погрузиться в код, чтобы посмотреть, смогу ли я вообще избавиться от сообщений.

Получается, что результат исходит от gifski пакет, который используется по умолчанию для генерации анимации.gifski позволяет вам контролировать вывод этих сообщений с флагом прогресса. gganimate использует выходные данные вызова interactive() для установки этого флага.

Я не уверен, почему ни один из параметров чанка в rmarkdown не подавляет сообщения (возможно, потому, что они созданыв C коде), но мой обходной путь для этой проблемы - вместо использования интерактивного сеанса R , подключенного к моему редактору, для создания документа, я использую следующую команду для создания окончательной версиимой документ из командной строки:

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

0 голосов
/ 24 февраля 2019

Одним из способов решения этой проблемы является присвоение анимации объекту goo <- ggplot(... и запись анимации в файл anim_save("goo.gif", goo) при подавлении результатов из фрагмента кода results = FALSE.Затем визуализируйте gif в уценке сразу после фрагмента кода ![](goo.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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...