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




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

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


أعتقد أنه يمكنك القيام بذلك أيضًا مع وظيفة 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 في أكبر بيرل / بايثون / الخ. البرنامج النصي ، يمكنك غرزة الرسوم البيانية جنبا إلى جنب مع أداة خياطة صورة سطر المفضلة لديك.

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


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


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

لقد فعلت بعض الأفلام باستخدام XNview (عارض الرسومات المجانية) إنشاء وظيفة عرض الشرائح. كنت أرغب في إظهار الاتجاهات عبر الزمن مع البيانات المكانية ، لذلك قمت للتو بإنشاء سلسلة من المؤامرات ، المسماة بشكل تسلسلي [paste ()) هو صديقك لجميع أنواع تسمية calistethics] ثم حمّلتها في حوار عرض الشرائح XNviews ووضعت بعض متغيرات التوقيت ، فويلا. استغرق 5 دقائق لتعلم كيفية القيام بذلك وإنتاج بعض الرسومات التنفيذية.