R + Inkscape で PDF を扱うときの有名?な問題に,「プロット点の丸が q になる」というのがある.プロットに使われる ZapfDingbats フォントがロードされないというのが直接の原因なのだが,いろいろ試したところどうも問題は少し複雑なようだ.
書き出し (R) \読み込み (Inkscape) | Win | Mac | ||
Win | CUI | q | q | |
GUI | q | q | ||
eps | CUI | ○ | ○ | |
GUI | ○ * | ○ * | ||
Mac | CUI | q | q | |
GUI | ○ | ○ | ||
eps | CUI | ○ | ○ |
CUI は pdf / postscript 関数で直接書き出し,GUI は R の保存メニューから,Mac R では GUI からの eps 出力ができないので省略.
すべての条件で両 OS の Inkscape は同じ結果を返したので,この問題は R 側の条件で発生することが分かる.eps で出力すると,テキストがパスに置き換えられるので,フォントがなくても問題なく読み込める.Mac R GUI から PDF 出力するときもテキスト to パス変換が行われるようだ.Windows R GUI から eps 出力すると,マーカーは問題ないのだが,図全体が上下に反転するというこれまたよくあるバグが発生する (*).
結局,postscript 関数での出力が一番安心して使えるということが分かった.というか,デフォルトの丸 (pch=1) 以外はどんな環境でもパスに変換されるので,丸も変換してよ.
2013-04-09 追記: 隣の助教の鎌谷先生も同じ問題で悩んでおられたが,最近解決方法を発見し,教えてくれた.R から出力される PDF のバージョンは 1.4 なのだが,これを 1.3 に直すとちゃんと読み込めるようになるそうだ.MacOSX の Preview で PDF を複製保存するとバージョン 1.3 で保存されるので,これを使って文字化けを回避することができる.グレイト!
2016-07-19 追記: こちらのブログ記事に正当な解決策が載りました.3年前の問題に対して5年も前に解決法があったのに気づかなかったとは.しかも普通に R のドキュメントに書いてあったし…