「おいこのタイトル何度目だよ。」「三度目だよ。」
はい。
先日cairoDeviceというパッケージがあることを知った(RでアンチエイリアスしたグラフのプロットができるcairoDeviceパッケージ - もうカツ丼でいいよな)んだった。でもCairoライブラリを使って綺麗にレンダリングしてくれるグラフィックデバイスとしてはCairoパッケージのCairoというそのまんまな名前のものがより一般的で多機能っぽい。
インストールは
install.packages("Cairo")
で、前回と同じくGTK+も別途必要なのでhttp://www.gtk.org/download-windows.htmlからダウンロードして解凍、環境変数PATHにbinフォルダへのパスを追加しておく。もしかしたら再起動が必要かもしれない。
使うには
library("Cairo")
これでCairoライブラリを使った各種グラフィックデバイスが使用可能になる。詳しくは?Cairoとかしてhelp参照のこと。
Cairoにはウィンドウ形式のグラフィックデバイスもついている。ちょっと比較してみよう。
## Windows標準 windows(width=4, height=4) curve(sin, -3, 3, col=4, main="Main タイトル") points(-3:3, seq(-0.5, 0.5, l=7)) polygon(c(-1,1,1,-1), c(-0.5,-0.7,0.5,0.7), col=rgb(0.2,0.4,0.2, alpha=0.7)) ## Cairoによるグラフィックデバイス library(Cairo) CairoWin(width=4, height=4) curve(sin, -3, 3, col=4, main="Main タイトル") points(-3:3, seq(-0.5, 0.5, l=7)) polygon(c(-1,1,1,-1), c(-0.5,-0.7,0.5,0.7), col=rgb(0.2,0.4,0.2, alpha=0.7))
キャプチャした。
曲線とか斜線、半透明部分の処理などを見るとかなり綺麗になっているのが分かる。もうQuartz見せつけられても悔しくない*1。
ほかにもマージンが違っていたりフォントが変わっていたりする。どうやらデフォルトはHelveticaらしい。その影響か日本語が文字化けしている。
フォントはCairoFonts()で指定できるので、これで日本語表示可能なフォントを指定してやれば文字化けは解消するはずなんだけど…
> CairoFonts() Warning message: In CairoFonts() : the R Cairo package was not installed with fontconfig. Please consider installing the cairo graphics engine (www.cairographics.org) with freetype and fontconfig support
とこんなエラーが出る(長いので適当に改行した)。freetypeとfontconfigを入れろという指示だがGTK+はall-in-oneで入れたので入っている。Cygwinのを入れてみたり、Octaveの中のdllをコピーしてみたりもしたけどやっぱダメ。ググっても同じように困っている人がメーリングリストに投稿したログしか出てこない。
ううむ。
一応メーリスの人に倣ってsessionInfoを。
> sessionInfo() R version 2.10.0 (2009-10-26) i386-pc-mingw32 locale: [1] LC_COLLATE=Japanese_Japan.932 LC_CTYPE=Japanese_Japan.932 [3] LC_MONETARY=Japanese_Japan.932 LC_NUMERIC=C [5] LC_TIME=Japanese_Japan.932 attached base packages: [1] stats graphics grDevices utils datasets methods base other attached packages: [1] Cairo_1.4-5 loaded via a namespace (and not attached): [1] tools_2.10.0
ほかの人は普通にできるから報告がないのか、それともCairoパッケージがマイナーなのか*2。
Windowsで日本語使いつつ半透明使いつつ綺麗な出力が欲しかったらやはりpdf()使うしかないんだろうか。