R2SWF
1.0.0
これは、Rグラフィックをフラッシュファイル(SWF形式)に変換するRパッケージです。変換は2つの異なる方法で実行できます。
plot()やlines()などのプロット関数を使用してSWFファイルを直接作成できます。コンベンションでは、高レベルのプロット関数を呼び出すたびに、 plot()などが、映画が新しいフレームを作成し、このフレームに次の形状を描画することです。このようにして、一連のplot()関数を呼び出すことで、アニメーションを作成できます。svg2swf()はSVGからSWFに変換し、 image2swf()に変換して、PNGおよびJPG画像を単一のSWFファイルに変換します。R2SWF次のライブラリに依存します。
ソースコードのlibmingはR2SWFに含まれており、自分で他の3つをインストールする必要があります。
Debian/ubuntuユーザーの場合、従属ライブラリをインストールするコマンドは
sudo apt-get install zlib1g-dev libpng12-dev libfreetype6-dev
RPMベースのシステム(Fedoraなど)については、実行してみてください
sudo yum install zlib-devel libpng-devel freetype-devel
最初の例では、最初にpng()関数を使用して20個の画像を作成し、次に単一の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 )
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() )は1つのフレームで映画を前進させ、低レベル関数( lines() 、 text()など)は現在のフレームにのみ有効です。