Latex / R

2012年11月25日 (日)

The animate Packageの利用例 /マスコットキャラクター「きさポン」を用いて

マスコットキャラクター(市制70周年記念シンボルマーク)を用いた事例
千葉県木更津市のマスコットキャラクター「きさポン」を利用させていただきました.
http://www.city.kisarazu.lg.jp/21,15683,74.html

●作成結果
「s-kisapon_9hiki.pdf」 (706KB)
(Adobe Readeバージョン9.4.5で確認)
iPadでは再生できないようです.

【コントロールメニュー】
- 動きを遅くする
+ 動きを早くする

●コード例
\documentclass{jarticle}
\usepackage{animate}
\usepackage{graphicx}

\begin{document}
  \begin{center}
    マスコットキャラクター「きさポン」\\
    マスコットキャラクター・市制70周年記念シンボルマーク \\
    http://www.city.kisarazu.lg.jp/21,15683,74.html \\

    木更津にきてね!  きさポンも,まってまーす!\\
    アサリもおいしいよ.\\
    \animategraphics[controls,loop]{3}{s1-kisaponA_}{1}{9}
  \end{center}
\end{document}

●使用epsファイル(未掲載)
s1-kisaponA_1.eps~s1-kisaponA_9.epsの9個のファイル

●作成手順のメモ書き(作成中)
1)   きさポンを取得
2) 画像の余白部を切り取る
 いくつかの方法があるようです.
  ・GIMP などのソフトを使う方法
     ファイルが多いときには不向きか・・・?.よい方法があるかも?
  ・画像をepsにして,GSviewにより余白を除く方法
     『EPSファイルの余白の切り取り』
     http://p-grp.nucleng.kyoto-u.ac.jp/~honda/tips.html#eps
     『画像の準備(EPS)
    http://www2s.biglobe.ne.jp/~pera/TeX_com/tex_graph2.html
    ファイルが多いときの効果的な方法があると思いますが分かりません.

※この処理を効果的に行うことが必要と思いますが,情報不足状態.

3) 2)で作成した画像を座標位置を与えて描画する
ここでは,Rのロゴ表示コマンド(addlogo)を用いた.library(pixmap)を使う.
Rのロゴ表示
http://www.okada.jp.org/RWiki/?%A4%CA%A4%F3%A4%C7%A4%E2%B7%C7%BC%A8%C8%C4%A5%A2%A1%BC%A5%AB%A5%A4%A5%D6%A1%CA%A3%B3%A1%CB#j50ce055

※ppmファイルは,IrfanView(File→Batch Conversion/Rename),
GIMPなどで作成できるようです.

【Rソースコード例】(下書き的な未完成ものです)
9個の動画用eps描画ファイルを作る.
コード中のkisapon1-small.ppm未掲載
====
library(pixmap)
kisa_s<- read.pnm("kisapon1-small.ppm")
sx=0
sy=0
dx=0.2
dy=0.2
stepx=0.1
nextx=sx+stepx

#1
plot.new()
addlogo(kisa_s,px=c(sx,sx+dx),py=c(sy,dy))
dev.copy2eps(file="kisaponA_1.eps")

#2
plot.new()
nextx=sx+stepx
addlogo(kisa_s,px=c(nextx,nextx+dx),py=c(sy,dy))
dev.copy2eps(file="kisaponA_2.eps")

#3
plot.new()
nextx=nextx+stepx
addlogo(kisa_s,px=c(nextx,nextx+dx),py=c(sy,dy))
dev.copy2eps(file="kisaponA_3.eps")
以下省略

====

> kisa_s
Pixmap image
  Type          : pixmapRGB
  Size          : 113x100
  Resolution    : 1x1
  Bounding box  : 0 0 100 113

※このコードを実行するとwarningsが発生
> source("C:\\rwork\\kisapon_ani.r")
38 件の警告がありました (警告を見るには warnings() を使って下さい)

warningsの内容:
In readChar(con, nchars = 1) :
UTF-8以外のマルチバイトロケールではバイト型でのみ読み込み可能です


4) 作成した9個のeps描画ファイルから,上下の余白部を適切に除外する.
ここでは,各epsファイルの10行目の
%%BoundingBox: 0 0 318 317

%%BoundingBox: 0 50 318 150
に変更することで,上下の余白部を除外した.
変更後のファイル名は頭にs1- を加えて別名で保存.

5)  作成したepsファイル(未掲載)
s1-kisaponA_1.eps ~ s1-kisaponA_9.epsの9個のファイル
TEXコードと同じディレクトリに置く.

●参考サイト
JPEG形式からPPM形式への一括変換方法
http://www2c.comm.eng.osaka-u.ac.jp/~babaguchi/Jpeg2ppm.pdf

●後記
動きのある資料作成の方法は複数あるようです,
目的に応じて選択をすることになると思います.
作成されるファイルのサイズにも注意したい.

【追記1】
■ブラウザで「きさポン」を表示する(試行錯誤して作る.参考コード例として)

Rのanimationパッケージを使う.

CRAN - Package animation
http://cran.r-project.org/web/packages/animation/index.html
・Reference manual:animation.pdf
http://cran.r-project.org/web/packages/animation/animation.pdf

●参考コード例【適宜修正して下さい】
library(animation)
library(pixmap)

ani.options(loop = FALSE,autobrowse = FALSE)
saveHTML(
  expr = {
    width = 480
    height = 113
    png(ani.options("img.fmt"), width = width,  height = height)
    par(mar  =  c(0, 0, 0, 0))
    kisa_s <- read.pnm("kisapon1-small.ppm")
    sx = 0
    sy = 0
    dx = 0.2
    dy = 0.2
    stepx = 0.1
    nextx = sx
    plot.new()
    plot.window(xlim = c(0,1), ylim = c(0, height /
width))
    addlogo(kisa_s, px = c(nextx, nextx + dx),py = c(sy,dy))
    for (i in 2:9){
      plot.new()
      nextx = nextx + stepx
      plot.window(xlim = c(0,1), ylim = c(0, height /
width))
      addlogo(kisa_s, px = c(nextx, nextx + dx), py = c(sy, dy))
    }
    dev.off()
  },
  img.name = "kisapon_plot", use.dev = FALSE, ani.type = "png", htmlfile = "kisapon_device.html",imgdir="kisapon_dir",description  =  "Note  how  we  use  our  own  graphics  device  in  'expr'.")


●Rで実行すると以下の警告が表示される
> source("C:\\rwork\\kisapon_html\\kisapon_web.r")
HTML file created at: C:/rwork/kisapon_html/kisapon_device.html
You may use ani.options(outdir = getwd()) or saveHTML(..., outdir = getwd()) to generate files under the current working directory.
38 件の警告がありました (警告を見るには warnings() を使って下さい)


●kisapon1-small.ppm は「きさポン」図ファイル.サイズ(px)100×113のものを使用
図は自分で作ってみましょう.

この図ファイルを
width = 480, height = 113の画面(デバイス)で作成すると,
縦につぶれた図が作成される.
これをもとの横縦比に戻すために,
plot.window(xlim = c(0,1), ylim = c(0, height / 480))
を使っている.

※このような設定をしないと480×480の図
作成され,
「きさポン」の上部の空きが大きくなってしまう.
【このような空きを除くには
ImageMagickconvertなどを使えるが・・・
よい方法があると思うのですが,分からないので,参考コード例で対応.

●関連ファイルはカレントティレクトリに作成される.
ティレクトリ内のkisapon_device.htmlをブラウザで表示する.
【Firefox16.0.2で確認済み】

●ImageMagick関連サイト

Convert, Edit, and Compose Images
http://www.imagemagick.org/script/index.php

Imagemagickとは
http://pen.agbi.tsukuba.ac.jp/~RStiger/hiki2/?Imagemagick
ImageMagickの使い方
http://www.riem.nagoya-u.ac.jp/~ohta/ImageMagick.html
ImageMagickの使い方
http://www.ric.hi-ho.ne.jp/cgi-bin/user/jsbach/wiki.cgi?ImageMagick%A4%CE%BB%C8%A4%A4%CA%FD

[PDF]映像情報メディア学会誌2007年12月号 私の研究開発ツール
http://www.google.co.jp/url?sa=t&rct=j&q=%E7%A7%81%E3%81%AE%E7%A0%94%E7%A9%B6%E9%96%8B%E7%99%BA%E3%83%84%E3%83%BC%E3%83%AB+ImageMagick&source=web&cd=3&cad=rja&ved=0CDkQFjAC&url=http%3A%2F%2Fwww.ite.or.jp%2Fdata%2Fjournal%2Fpassed_issues%2F2007%2Ftool0712%2Ffiles%2Farticle.pdf&ei=hB2wUPiRPNDQmAWYtIDQBA&usg=AFQjCNGAuUUbmWPVcFrDSAB7nWOU60aJ8g


●Firefoxの表示

Kisapon__browser

※ kisapon_device.html を編集することで,図下部のRの簡易コードを
不表示にしたり,またテキストを加えることも可能と思います.

【追記2】 Rのanimationパッケージの「saveLatex」を使ってPDFファイルに
「きさポン」を表示してみたが・・・.分からない箇所もあったが,覚書に残す.

●参考コード例(覚書)
rm(list=ls(all=TRUE))#ワークスペース上の全てのオブジェクトを消去する
library(animation)
library(pixmap)
saveLatex(
  expr = {
    width = 2
    height = 2
    pdf(file="zu_kisapon.pdf")
    par(mar  =  c(0, 0, 0, 0))
    kisa_s<- read.pnm("kisapon1-small.ppm")
    sx = 0
    sy = 0
    dx = 0.2
    dy = 0.2
    stepx = 0.1
    nextx = sx
    for (i in 1:9){
      plot.new()
      plot.window(xlim = c(0,1), ylim = c(0, height / width))
      addlogo(kisa_s, px = c(nextx, nextx + dx), py = c(sy, dy))
      nextx = nextx + stepx
    }
    #dev.off()  #
dev.off() をおくと実行不可のようです疑問箇所
  },
img.name = "zu_kisapon", ani.opts = "controls,loop,width=0.95\\textwidth",
latex.filename = ifelse(interactive(),"zu_kisapon_motion.tex", ""),
ani.dev = "pdf", ani.type = "pdf",ani.width  =  2,  ani.height  = 2 ,
interval = 0.1, nmax =9 ,outdir=getwd(),
documentclass  =  paste("\\documentclass{article}",
"\\usepackage[papersize={5in,5in},margin=0.3in]{geometry}",  sep  =  "\n"))


●生成されるzu_kisapon_motion.pdfで「きさポン」が表示される.
ページ
の下の部分に表示される.表示位置の調整の方法は,どうのようにするのだろう・・・

疑問箇所
zu_kisapon.pdf 
【PDF-XChange Viewerで表示ができるようです
Adobe Readerでは表示不可.

zu_kisapon.pdfの1ページに
画像が表示されていない.
ページサイズも,他のページと差異があるようです.

同様ようなことは追記1の場合にも,
kisapon_plot1.pngの表示ができなかったようです

zu_kisapon.pdfを
開くきはRを終了するか
Rで,
> graphics.off()

実行してから行う. 

●結果(zu_kisapon_motion.pdfの表示)
Adobe_de_kisapon
「zu_kisapon_motion.pdf」をダウンロード
 (620KB)

●疑問箇所に対応するために
1) Rで動画のコマ画像を作る
2) pdflatexでPDF動画ファイルを作る(MSDOS環境で)
の手順を試みる.

1) 以下のコードで,zu2_kisapon.pdf を作る.

rm(list=ls(all=TRUE))#ワークスペース上の全てのオブジェクトを消去する
library(pixmap)
width = 2
height = 2
pdf(file="zu2_kisapon.pdf",width=2,height=2)
par(mar  =  c(0, 0, 0, 0))
kisa_s<- read.pnm("kisapon1-small.ppm")
sx = 0
sy = 0
dx = 0.2
dy = 0.2
stepx = 0.1
nextx = sx
for (i in 1:9){
  plot.new()
  plot.window(xlim = c(0,1), ylim = c(0, height / width))
  addlogo(kisa_s, px = c(nextx, nextx + dx), py = c(sy, dy))
  nextx = nextx + stepx
}
dev.off()

「zu2_kisapon.pdf」をダウンロード (605KB)

2) 以下のLatexコードをzu2_kisapon_motion.texとして,pdflatexによりPDFファイルを作る.
\documentclass{article}
\usepackage[papersize={5in,5in},margin=0.3in]{geometry}
                \usepackage{animate}
                \begin{document}
                \begin{figure}
                \begin{center}
                \animategraphics[controls,loop,width=0.95\textwidth]{10}{zu2_kisapon}{0}{8}
                \end{center}
                \end{figure}
                \end{document}


MSDOSで、
>pdflatex zu2_kisapon_motion.tex         

これで,アニメーションのzu2_kisapon_motion.pdfができる.

■あとがき
記載内容は個人的覚書です.


無料ブログはココログ
2017年9月
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30