Как я могу сделать анимацию в R, показывая гистограмму с разными размерами бина? - PullRequest
3 голосов
/ 18 апреля 2020

Я хотел использовать gganimate(), но не смог найти работоспособное решение.

Я закончил тем, что что-то успешно создал - используя пакет animation. Мне удалось создать как GIF, так и видеовыход, но ни один из них не был таким гладким или таким же хорошим, как я надеялся.

Вывод очень нестабильный - если я хочу показать 20 различных разрывов с использованием базы " «Гистограмма», анимация показывает только около половины из них. Вы можете видеть, что GIF выполняет итерацию по всем # ячейкам, но графики не обновляются для каждого шага.

Вот вывод GIF моего кода.

library('ggplot2')
library('animation')

psd_1 <- data.frame(rnorm(5000, 100, 15))

colnames(psd_1)[1] <- "passengers"

ani.options(interval=.25, nmax=20)

a = saveGIF(
  {
    for (i in c(1:20)) {
      hist(psd_1$passengers, breaks=i, main=paste("Histogram with ",i, " bins"),
           xlab="Total Passengers")
    }
  }
  , movie.name="wodies.gif")

1 Ответ

3 голосов
/ 19 апреля 2020

Как я уже упоминал в комментариях, если вы передадите одно число на breaks=, это не гарантирует количество разрывов, это всего лишь предложение. Если вы хотите установить точное число, вам нужно передать вектор разрывов. Вы можете сделать

a = saveGIF(
  {
    for (i in c(1:20)) {
      hist(psd_1$passengers, 
           breaks=seq(min(psd_1$passengers), max(psd_1$passengers), length.out=i), 
           main=paste("Histogram with ",i, " bins"), 
           xlab = "Total Passengers")  }
  }
  , movie.name = "wodies.gif")
...