graphics كيفية إنشاء فيلم من سلسلة من المؤامرات في R




كيفية استقبال القنوات الأرضية البث الرقمي على شاشات lcd (6)

في ما يلي مثال كامل على إنشاء فيلم 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)

هل هناك طريقة سهلة لإنشاء "فيلم" من خلال خياطة عدة قطع ، داخل R؟


إذا كنت التفاف النص الخاص بك R في أكبر بيرل / بايثون / الخ. البرنامج النصي ، يمكنك غرزة الرسوم البيانية جنبا إلى جنب مع أداة خياطة صورة سطر المفضلة لديك.

لتشغيل البرنامج النصي R مع برنامج ملحقة ، استخدم الأسلوب R CMD BATCH .


لست متأكداً من أنه من الممكن في R. لقد قمت بمشروع مرة واحدة عندما تم تصدير نقاط البيانات من R إلى قاعدة بيانات MySQL واختار تطبيق Flex / Flash نقاط البيانات هذه وأعطى تصورات متحركة.



أعتقد أنه يمكنك القيام بذلك أيضًا مع وظيفة 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)

رمز الاعتماد يذهب إلى Jarek Tuszynski ، دكتوراه.


إليك طريقة واحدة وجدتها باستخدام 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 ليناسب صورك الفاخرة.