R のグラフはベクタ(ベクトル)画像で出力すべきたった1つの理由

この記事は、 R Advent Calendar 2012 26日目のものです。

今回は、印刷時の仕上がりがきれいだから、R で作ったグラフはベクタ画像で出力しましょうというお話です。

紙に印刷されるグラフは、印刷屋さんが GJ ならいいのですが、執筆者が出力した紙原稿をそのまま印刷してしまうようなケースがあります。そうすると、せっかくのグラフの美しさが損なわれてしまうおそれがあります。

まずは、その残念な様子を確認してみましょう。→ベクタ画像とPNG画像の比較(PDF: Slideshareにて)

PDF ファイル内の上にある図がベクタ画像(拡張メタファイル形式として出力)、下にある図が PNG 形式として出力したものです。ちなみに、図は、下記のような plot 関数で出力したものです。

plot(1:50)

plot of chunk unnamed-chunk-1

両者の違いは一目瞭然だと思います。下にあった PNG 画像の残念さといったら言うまでもありません(PNG 形式自体は、Web での利用が前提であって、印刷を想定したものではないわけですが)。さらにその違いを実感したい方は、実際にプリンタで出力してみるとよいでしょう。

ベクタ画像そのものに関する技術的なところは割愛しますが(Wikipedia 参照)、つまるところ、「画質が落ちない」というのがベクタ画像の最大の特徴です。私たちがよく見聞きするものとして、JPEG・GIF・PNG といった形式がありますが、これらは、紙に印刷してしまうと見栄えが悪くなってしまいます(上記 PDF を印刷して確認してみてください)。

グラフを出力してから Word に貼り付けるなど、Windows 上ですべての作業を完結させる場合は、上記の画像のようにして、「Metafile」を選択して保存します。Mac など、複数の OS 間で画像のやり取りが必要な場合は、EPS 形式(デバイスとして使うのは postscript)として保存しましょう(複数の OS をハシゴできる方には無用な説明だと思いますが)。

保存方法: Windows の場合

ちなみに、Windows の場合、コンソール上で保存作業を行うには、

win.metafile(filename="hogehoge.wmf")
plot(hoge)
dev.off()

と入力して保存します。これを Word に貼り付ければ、拡大や縮小をしても、(縦と横のバランスは微調整が必要ですが)画質が落ちるようなことはなく、キレイに印刷することができます。

R で作られた美しいグラフを印刷時に台無しにしないよう、ベクタ画像として出力・保存をしましょう。