Есть ли простой способ создать «фильм», сшив несколько сюжетов в пределах R?Создание фильма из серии сюжетов в R
ответ
Вот один метод, который я нашел с помощью R справки:
Для создания отдельных кадров изображения:
jpeg("/tmp/foo%02d.jpg")
for (i in 1:5) {
my.plot(i)
}
dev.off()
Чтобы сделать фильм, сначала установите ImageMagick. Затем вызовите следующую функцию (которая вызывает «конвертировать», часть ImageMagick я полагаю):
make.mov <- function(){
unlink("plot.mpg")
system("convert -delay 0.5 plot*.jpg plot.mpg")
}
Или попробуйте использовать функцию FFmpeg, как описано в этом article (я нашел это дает более чистых результатов): ffmpeg -r 25 -qscale 2 -i tmp/foo% 02d.jpg output.mp4
Может потребоваться немного возиться, но это казалось довольно простым, как только все было установлено.
Конечно, везде, где вы видите «jpg» или «jpeg», вы можете заменить GIF или PNG в соответствии с вашими фантазиями.
Я не уверен, что это возможно в R. Я сделал проект один раз, когда точки данных из R были экспортированы в базу данных MySQL, а приложение Flex/Flash выбрало эти точки данных и дало анимированные визуализации.
Вам не нужна база данных. В цикле сохраните все ваши изображения. Затем используйте инструмент командной строки, чтобы сшить их вместе; imagemagick - одна из возможностей. –
Да, это был самый простой способ.Я предполагаю, что из-за модульности ОС это невозможно сделать в пределах R, если R не скомпилировано с помощью специальной библиотеки или такой. –
Это умная техника, Srirangan. Я много лет назад узнал, что когда кто-то говорит «это невозможно», они подразумевают «я не знаю, как это сделать». Умная часть техники заключается в том, что на форуме, таком как SO, кто-то обязательно скажет вам, как это сделать. Я, кстати, не саркастичен. Я ДЕЙСТВИТЕЛЬНО думаю, что это хорошая техника, и я собираюсь попробовать ее. Спасибо Шрирангану. – pavium
Если вы оберните свой R-скрипт в более крупном Perl/Python/etc. скрипт, вы можете сшивать графики вместе с вашим любимым инструментом строчки изображения командной строки.
Чтобы запустить скрипт R с помощью сценария оболочки, используйте метод R CMD BATCH
.
Зачем вам нужен другой язык для использования инструмента командной строки? – hadley
Ну где же требуется скрипт Perl/Python? Кроме того, посмотрите на Rscript (и littler) как лучшие альтернативы «R CMD BATCH». –
Вам не нужен другой язык. Вы можете использовать оболочку как bash. Все что пожелаете. Есть много вариантов. Я использую R CMD BATCH, потому что он более или менее универсален для разных платформ. –
Я думаю, вы можете сделать это также с помощью функции write.gif в библиотеке caTools. Сначала вы должны получить свой график в виде многокадрового изображения. Я не знаю, как это сделать. Кто угодно? Bueller?
Классический пример анимированного GIF это код, который я не писал, но я blog about некоторое время назад:
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)
Код Заслуга Ярек Tuszynski, кандидат технических наук.
Я получаю сообщение об ошибке на последней строке: «Ошибка: неожиданный ввод в» write.gif (X, «" » – Nova
Для вышеуказанной ошибки - измените отметки кавычек вокруг' Mandelbrot.gif' в последней строке кода, чтобы регулярные кавычки (т. е. удалять их и вводить новые кавычки в вашем скрипте) – CCID
Я сделал несколько фильмов, используя XNview (бесплатный просмотрщик графики). Создайте функцию слайд-шоу. Я хотел показать тренды во времени с помощью пространственных данных, поэтому я только что создал серию графиков, последовательно названных [paste() - ваш друг для всех видов именования калитетиков], затем загрузил их в диалог слайд-шоу XNviews и установил несколько переменных таймера, вуаля. Потребовалось 5 минут, чтобы узнать, как это сделать и создать некоторую исполняемую графику.
Вот полный пример создания анимированного 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)
- 1. Создание фильма из серии графиков matplotlib с использованием matplotlib.animation
- 2. Алгоритм изменения раскраски в серии сюжетов
- 3. Создание серии роста в R
- 4. Создание серии из серии в d3
- 5. Отображение серии растровых изображений в виде фильма
- 6. Создание фильма в Jython/Python
- 7. Создание фильма выскабливание сценарий
- 8. Создание серии ARCH из белого шума в R
- 9. Создание кортежей из серии массивов.
- 10. Создание видео из серии изображений?
- 11. Создание серии из четырех номеров
- 12. Создание новой информационной рамы из серии
- 13. Создание подзаголовка сложных сюжетов (более 2 строк)
- 14. Серия R-серии с группами
- 15. Преобразование еженедельной Серии времени в серии R
- 16. Включение серии сырых изображений в рамки фильма в Android
- 17. Дилемма форматов сохранения сюжетов - R/base plot
- 18. Создание фильма из данных RGB, хранящийся в массиве в MATLAB
- 19. создание фильма в matlab для сложного сюжета
- 20. Создание фильма с использованием ffmpeg и phantomjs
- 21. Создание серии Fibonacci в F #
- 22. Создание фильма из python без сохранения отдельных кадров в файлы
- 23. Создание (MPEG-4) фильма из нескольких изображений (JPG) в MatLab
- 24. Создание, управление и уничтожение фильма в Java
- 25. Java - Создание массива из серии строк
- 26. Создание серии с оценочными коэффициентами
- 27. Pandas: создание серии из генератора кортежа
- 28. Создание серии дат
- 29. Создание серии гексагонов
- 30. Создание серии дат в data.table
Вы можете даже сохранить jpeg() и dev.off() вне цикла - если вы используете соответствующее имя файла, например. jpeg ("/ tmp/foo% 02d.png"), R будет просто создавать новые файлы во время цикла. Вам не нужно вычислять имя файла. Делает это еще проще. –
Вы должны сделать исправление Дирка, а затем принять свой собственный ответ. Хорошее решение. –
полезно ... но трудно понять, где сохраняется файл .mpg после запуска функции «make.mov» в R? Я работаю в студии R на платформе Mac. – ToNoY