ホーム | 統計 Top | PDF形式によるRのグラフ出力とAdobe Illustratorでの加工
統計解析環境としてRを選ぶ利点の一つに、強力な作図機能が挙げられる。グラフィックパラメータ(par)を詰めれば相当程度に図の仕上がりを制御できるので、特に大量のグラフを自動生成したい場合に便利である。一方、数枚の図を論文用に出力したい場合、Adobe Illustratorなどのグラフィックスソフトと併用することで、美観上も優れたグラフを得られる。この際、RからPDF形式で図を出力するのが良い選択肢となる。
目次
- RのグラフをPDF出力しよう
- PDFをIllustratorで整形しよう
- Illustratorでデータを書き出そう
カラーモードはどうする?
クリッピングマスクの意義とは
機能・構造の類似したオブジェクトはグループ化すべし
(以下、補筆事項があれば適宜追加する)
RのグラフをPDF出力しよう
まずはRを用いて簡単なグラフを作る。たとえば以下の操作でサインカーブを描ける(Fig. 1)。
## 0から5まで(ラジアン)の範囲に対応するサインの値をプロットしてみう > plot( sin( seq(0,5,0.1) ) ~ seq(0,5,0.1) , type="o", xlim=c(0,5), ylim=c(-1,1), pch=1 )
Fig. 1 | Rで描いたサインカーブの作例。点と線が重ね描きされるようtype="o"を指定
これをファイルとして保存したい場合、(コンソールではなく)グラフの窓がアクティヴな状態で、メニューの「ファイル」>「別名で保存」として、好みのグラフィックファイル形式を選ぶ。例えばWindows版のR 2.14.2であれば、PDFも含めて以下の7形式が選択可能である。
- Metafile: ベクター。これを選ぶ利点は
あまりない(2015/05/15追記: PowerPointに貼り付けてから加工する用途には便利。ただし、Windows版のみ) - Postscript: ベクター。主としてプリンタに送るための描画命令を記録する形式であり、やはり利点は薄いかと
- PDF: ベクター。
- Png: ラスター。可逆圧縮。Rからグラフを絵として出力したい場合は、この形式をお薦めする。ただし、アンチエイリアスが掛からない等の問題あり。なお画像サイズは、モニター上で表示されている解像度と等しくなるようだ。
- Bmp: ラスター。無圧縮。ファイルサイズが大きくなるのでお薦めはしない。
- TIFF: ラスター。可逆圧縮。
- Jpeg: ラスター。非可逆圧縮。画質が劣化する上、jpegの圧縮アルゴリズム自体がグラフ(線画表現)に不向きなため、お薦めできない。
Macについては、メニューから保存する場合は自動的にPDF形式となる。保存されたファイルを「プレビュー」から開けば、他の画像形式に変換することは可能である。
PDFをIllustratorで整形しよう
以下の操作はAdobe Illustratorを用いる前提である。操作は基本的なものに絞ってあるので古いバージョンでも実施可能なはず。
上でPDFを選択して保存(ここからPDFをダウンロード)した場合、もちろんAdobe ReaderやAcrobat、MacOS Xの「プレビュー」といった各種のビューワで開くことができる。そして本格的に整形したい場合は、Illustratorから開く。以下の各項では、PDFをIllustratorに取り込んだ後で考慮すべき作業項目を順次説明する。
カラーモードはどうする?
取り込んだ直後の画像は、カラーモードが「RGB」になっている。最終産物を学会発表用のパワーポイントや、自家製の印刷物にのみ使用する場合は、このままで作業を進めればよい。問題は商業印刷(論文含む)用のグラフィックを生成したい場合だ。
徹底して仕上がり品質にこだわりたい場合は、カラーモードをCMYKに変換するのも手である。ただし色空間やインクの乗り方を熟知していないと、かえって汚くなる恐れがある。最近は印刷会社側でRGB→CMYKの変換を上手にやってくれるので、ユーザー側では弄らない方が良いかも知れない。
クリッピングマスクの意義とは
Rが生成するPDFファイルには、一見して存在意義の分かりにくいデータが幾つか含まれている。その筆頭が「クリッピングマスク」だ。
Illustratorにおける「クリッピングマスク」の本来の使い方は、大きな図形オブジェクトの一部だけを表示させたいとき、図形を破壊的に刳り貫く代わりにクリッピング範囲を指定し、それ以外の部分を不可視にする(いわば窓越しに景色を見るような)ものだ。
Fig. 2 | Illustratorに取り込んだ直後のPDFファイルの構造。青い枠がクリッピングマスク
Fig. 2に示したように、Rはプロットエリアを自動的にクリッピングマスクで囲う仕様になっている。これには何の意味があるのか。理解の一助として、今度はわざとデータ点がはみ出すようなグラフをRで出力してみる。
## データ範囲はx = 0 から x = 7までだが、プロットエリアは0から5まで > plot( sin( seq(0,7,0.1) ) ~ seq(0,7,0.1) , type="o", xlim=c(0,5), ylim=c(-1,1), pch=1 , col=rgb(0,0,1) )
(PDFファイルはここからダウンロード)
Fig. 3 | xの範囲として0から7までを含むデータを、0から5までのプロットエリアを指定してRで描画し、PDFをIllustratorで開いた結果。上の図はクリッピングマスクを外した状態。下の図が本来の描画結果で、プロットエリアをはみ出した部分は隠蔽される。
お分かりいただけただろうか。プロット対象のデータがプロット範囲を逸脱する場合(Fig. 3 上)に、はみ出したデータ点を非表示にする(Fig. 3 下)ために、Rはクリッピングマスクを生成するのである。とはいえ、Fig. 3のような特殊例を除き、後の編集工程では不要な場合も多い。表示・非表示を切り替えてもプロットの見た目が変わらないようであれば、それはフェイルセーフとしてとりあえず付与されたクリッピングマスクであり、削除してしまったほうがデータの構造は単純になるだろう。個人的には削除することが多い。
機能・構造の類似したオブジェクトはグループ化すべし
Fig. 4 に示すように、Rが直接吐き出すPDFファイルは各パーツのグループ化が不十分であるか、全く為されていないことが多い。このままだと、線や文字の書式を変更する度に対象のパーツを全て個別に選択せねばならず、極めて煩雑である。またデータを他人に受け渡す際にも、解読が困難となる。
Fig. 4 | 取り込み直後のPDFにおけるグループ構成の例。グラフの縁、軸線、目盛りの数字が全て同じ階層にあり、構造化されていない。
Illustratorでは、パスや文字といったオブジェクトを複数まとめて「グループ化」することができる。グループ化されたオブジェクトは、画面上でそのコンポーネントの一つをクリックするとグループ全体が選択状態になり、移動や拡大縮小、表示・非表示の切り替え、カラーの適用といった編集を一括して行えるようになる。
Fig. 5 | Illustratorにおけるグループ化の構成例。「x軸の軸線」「x軸の数値」「y軸の軸線」「y軸の数値」の4グループへ統合した。
Fig. 5 に、適切なグループ化を施した結果を示す。実際にどのパーツをどの程度まとめるかは、各人の流儀に依るだろう。ただし後々の書式変更を容易にするという点では、「文字」と「パス」は同レベルのグループに混在させない方が良い。というのも、この2つはIllustratorにおいてカラーの適用方法が異なるからである。
Fig. 6 | (上)「文字」に対するカラー適用例。(下)「パス」に対するカラー適用例。
Illustratorのオブジェクトは、初期状態において「塗り」および「線」という2種類のカラー情報を保持することができる。Fig. 6 の上の例は文字に対するカラー適用例であるが、ここで「塗り」の色は黒であり、「線」の色がオレンジである。しかして多くのパソコンソフト(例えばMS Word)における「フォントカラー」に、概念的に対応するのは、オレンジ(線色)ではなく黒(塗り色)の方だろう。オレンジについては「文字の縁取りの色」を示すと解釈するのが自然である。
一方、Fig. 6 の下の例は「パス」における塗りの概念を表す。こちらの「塗り」の色はブルーであるが、これはパスで閉じられた領域を塗りつぶすための色として用いられている。そして「線」の色(黒)は、パスそのものの色を定義している。
従って多くの場合、文字とパスに同一の色指定をしても上手くいかない。ゆえに、これらは別のグループにまとめられるべきなのである。
Illustratorでデータを書き出そう
満足のいく整形結果が得られたら、データを書き出そう。なお、人は満足を覚えた瞬間から堕落を始めるものだ。
ここで書き出すデータは外部アプリケーションで使うためのものであり、原データについてはIllustratorに取り込んだ直後に「別名で保存」として .ai 形式で保存しておくこと。
どのデータ形式で書き出すかは頭を悩ませる問題であり、筆者自身も、これ一つで十分という解決策にはたどり着いていない。論文用のグラフをいかなるデータ形式で取り扱うべきかは、近日中に別記事としてまとめる予定である。とりあえず現段階ではPDFでの出力例を1つだけ挙げておく。
Fig. 7 | Illustratorでのグラフ加工例
(加工例のPDFファイルはここからダウンロード)