นี่คือแพ็คเกจ R เพื่อแปลงกราฟิก R เป็นแฟลชไฟล์ (รูปแบบ SWF) การแปลงสามารถทำได้ในสองวิธีที่แตกต่างกัน:
plot() และ lines() การประชุมคือทุกครั้งที่คุณเรียกฟังก์ชั่นการพล็อตระดับสูงเช่น plot() ภาพยนตร์จะสร้างเฟรมใหม่และวาดรูปร่างต่อไปนี้ในเฟรมนี้ ด้วยวิธีนี้คุณสามารถสร้างแอนิเมชั่นบางอย่างได้โดยเรียกฟังก์ชั่ plot()svg2swf() เพื่อแปลงจาก SVG เป็น SWF และ image2swf() เพื่อแปลงภาพ PNG และ JPG เป็นไฟล์ SWF เดียว R2SWF ขึ้นอยู่กับห้องสมุดต่อไปนี้:
ซอร์สโค้ดของ libming รวมอยู่ใน R2SWF และคุณต้องติดตั้งอีกสามตัวด้วยตัวเอง
สำหรับผู้ใช้ Debian/Ubuntu คำสั่งในการติดตั้งไลบรารีที่ขึ้นอยู่กับ
sudo apt-get install zlib1g-dev libpng12-dev libfreetype6-dev
สำหรับระบบที่ใช้ RPM (เช่น Fedora) ลองใช้งาน
sudo yum install zlib-devel libpng-devel freetype-devel
ในตัวอย่างแรกเราสร้างภาพ 20 ภาพโดยใช้ฟังก์ชัน png() จากนั้นแปลงเป็นไฟล์ SWF เดียว R2SWF-ex1.swf
# # Creating png files
png( " image-png-%03d.png " , 480 , 300 )
x = seq( 0 , 2 * pi , length.out = 20 )
cols = rainbow( 20 )
for ( i in 1 : 20 ) plot( x [ i ], sin( x [ i ]), xlim = c( 0 , 2 * pi ), ylim = c( - 1 , 1 ),
col = cols [ i ], pch = 16 , cex = 2 , main = " PNG => SWF " )
dev.off()
# # Obtain the filenames
pngfiles = sprintf( " image-png-%03d.png " , 1 : 20 )
# # Convert to SWF
image2swf( pngfiles , " R2SWF-ex1.swf " , interval = 0.3 )
การใช้ svg2swf นั้นค่อนข้างคล้ายกันยกเว้นว่าภาพเคลื่อนไหวเอาต์พุตมีกราฟิกเวกเตอร์
# # Do similar things as above
svg( " image-svg-%03d.svg " , 8 , 5 )
x = seq( 0 , 2 * pi , length.out = 20 )
cols = rainbow( 20 )
for ( i in 1 : 20 ) plot( x [ i ], sin( x [ i ]), xlim = c( 0 , 2 * pi ), ylim = c( - 1 , 1 ),
col = cols [ i ], pch = 16 , cex = 2 , main = " SVG => SWF " )
dev.off()
svgfiles = sprintf( " image-svg-%03d.svg " , 1 : 20 )
# # Convert to SWF
svg2swf( svgfiles , " R2SWF-ex2.swf " , interval = 0.3 )
ตัวอย่างที่สามแสดงวิธีใช้อุปกรณ์ SWF เพื่อสร้างไฟล์ SWF (แทนที่จะแปลง) โดยตรง
swf( " R2SWF-ex3.swf " )
set.seed( 123 )
x = rnorm( 5 )
y = rnorm( 5 )
for ( i in 1 : 100 ) {
plot( x <- x + 0.1 * rnorm( 5 ), y <- y + 0.1 * rnorm( 5 ),
xlim = c( - 3 , 3 ), ylim = c( - 3 , 3 ), col = " steelblue " ,
pch = 16 , cex = 2 , xlab = " x " , ylab = " y " )
title( " Brownian Motion " )
}
dev.off() โดยทั่วไปเมื่อใช้อุปกรณ์ SWF ฟังก์ชั่นการพล็อตระดับสูง (เช่น plot() ) จะพัฒนาภาพยนตร์ด้วยเฟรมเดียวและฟังก์ชั่นระดับต่ำ ( lines() text() ฯลฯ ) จะมีผลเฉพาะกับเฟรมปัจจุบันเท่านั้น