Подтвердить что ты не робот

Создание фильма из серии сюжетов в R

Есть ли простой способ создать "фильм", сшив несколько графиков в пределах R?

4b9b3361

Ответ 1

Вот один метод, который я нашел с помощью справки R:

Чтобы создать отдельные кадры изображения:

jpeg("/tmp/foo%02d.jpg")
for (i in 1:5) {
  my.plot(i)
}
dev.off()

Чтобы сделать фильм, сначала установите ImageMagick. Затем вызовите следующую функцию (которая вызывает "convert", часть ImageMagick, я полагаю):

make.mov <- function(){
     unlink("plot.mpg")
     system("convert -delay 0.5 plot*.jpg plot.mpg")
}

Или попробуйте использовать функцию ffmpeg, как описано в этой статье (я нашел, что это дает более чистые результаты): ffmpeg -r 25 -qscale 2 -i tmp/foo% 02d.jpg output.mp4

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

Конечно, везде, где вы видите "jpg" или "jpeg", вы можете подставить GIF или PNG в соответствии с вашими фантазиями.

Ответ 2

Посмотрите на animation пакет, созданный Yihui Xie или EBImage пакет bioconductor (? Animate).

Ответ 3

Я думаю, вы можете сделать это также с помощью функции write.gif в библиотеке caTools. Сначала вы должны получить свой график в виде многокадрового изображения. Я не знаю, как это сделать. Кто угодно? Bueller?

Классический пример анимированного GIF - это код, который я не писал, но я сделал блог о некоторое время назад:

library(fields) # for tim.colors
library(caTools) # for write.gif
m = 400 # grid size
C = complex( real=rep(seq(-1.8,0.6, length.out=m), each=m ), imag=rep(seq(-1.2,1.2, length.out=m), m ) )
C = matrix(C,m,m)

Z = 0
X = array(0, c(m,m,20))
for (k in 1:20) {
Z = Z^2+C
X[,,k] = exp(-abs(Z))
}

image(X[,,k], col=tim.colors(256)) # show final image in R
write.gif(X, 'Mandelbrot.gif', col=tim.colors(256), delay=100)

Кодовый кредит принадлежит Джареку Тушинскому, доктору философии.

Ответ 4

Если вы закроете свой R script в более крупном Perl/Python/и т.д. script, вы можете сшивать графики вместе с вашим любимым инструментом сшивания строки командной строки.

Чтобы запустить R script с помощью обертки script, используйте метод R CMD BATCH.

Ответ 5

Я не уверен, что это возможно в R. Я сделал проект один раз, когда точки данных из R были экспортированы в базу данных MySQL, и приложение Flex/Flash подняло эти точки данных и дало анимированные визуализации.

Ответ 6

Я сделал несколько фильмов, используя XNview (бесплатный просмотрщик графики). Создайте функцию слайд-шоу. Я хотел показать тренды во времени с помощью пространственных данных, поэтому я только что создал серию графиков, последовательно названных [paste() - ваш друг для всех видов именования калитетиков], затем загрузил их в диалог слайд-шоу XNviews и установил несколько переменных таймера, вуаля. Потребовалось 5 минут, чтобы узнать, как это сделать и создать некоторую исполняемую графику.

Ответ 7

Вот полный пример создания анимированного GIF-фильма из файла HDF5. Данные должны быть набором данных HDF трехмерного массива [Nframes] [Nrows] [Ncolumns].

#
# be sure to be run as Administrator to install new packages
#
source("http://bioconductor.org/biocLite.R")
biocLite("rhdf5")
install.packages('caTools')
install.packages('fields')

library(caTools)
library(fields)
library(rhdf5)

x = h5read(file="mydata.h5",name="/Images")
write.gif(x,"movie1.gif",col=rainbow,delay=10,flip=TRUE)