こにしき(言葉・日本社会・教育)

関西学院大学(2016.04~)の寺沢拓敬のブログです(専門:言語社会学)。

Rの日本語を含む図を文字化けせずにepsで出力する

Rで日本語の文字を含んだ図をepsで出力しようとすると、うまく反映されないはずです。
解決策として今まで僕は、次のようなのをつかってきました。

  1. 日本語をやめて英語で表現する
  2. ローマ字で表現する
  3. .emf などで出力してからコンバータなどで .eps に変換する


最初のはいやなかんじで、とくに私の研究の専門的にも思想的にも、あまりやりたくない(※日本語防衛論者(笑)じゃないよ!)。
2番目のは、視認性が低い、読み慣れない、正書法がよくわからない。
3番目は確実だけれどとにかくめんどうくさい。


というわけで、日本語でやる方法を調べてみました。
見つかったのはこのページ


以下の記述は上のページの丸パクリです。
私の覚え書き以上の意味はありません。
とはいえ、ちょっとだけ優しい解説ですかね。
いや、そんなことないかな。いや2㍊くらいは優しいかな。

1 フォントオプション

まず、フォントを追加しておかないとだめらしい。次のをコピペ。

# 日本語を使うためのオプション
options(  X11fonts = c(
     "-*-gothic-%s-%s-normal--%d-*-*-*-*-*-*-*"
    ,"-adobe-symbol-*-*-*-*-%d-*-*-*-*-*-*-*"
   ))

2作図

それから、作図をする。とりあえずデータはなんでもよいので、「スイス諸地域の出生率」データをロード。データの詳細はここにありますんで、興味がある人はどうぞ → http://goo.gl/X30QB

# スイスデータ読み込み
 data(swiss) 

# ラベルは英語なので、強引に日本語ラベルを付けます
 colnames(swiss)["Fertility"] <- "標準化された出生率"
 colnames(swiss)["Education"] <- "教育"

plot(swiss$教育,swiss$標準化された出生率
    ,main="スイス仏語圏47地域の\n出生率と教育レベル(1888年)")

3 出力

そのうえで、ファイルに出力します。フォントとして日本語フォントを指定する(family="Japan1")のがポイント。

 dev.copy2eps(file="hoge",family="Japan1")


要は、


上記1と3の間に作図をはさみこめばいい


ということです。上のスクリプトは、1と3の部分はコピペで問題ありません。(もちろん、3の family="" でフォントの細かい設定はできます、詳しくは上記のRwikiのページ参照)

仕上がりイメージ

ただし、これはあくまでpng画像で、実際のepsのほうがだんぜんキレイです。
http://dl.dropbox.com/u/4689919/BLOG_Pict/swiss.png