知に至る病

お勉強したことを忘れないように書き留めています。

R のグラフで日本語を使う

基本的な設定

先人の知恵と努力のおかげで,R でも日本語を用いたグラフが作成できるようになっています。 画面にプロットする場合でも,PDF に出力する場合でも,Rdevga や .Rprofile で適切なフォントを指定しておけば,問題なく日本語を使用することができます。

Rdevga
## 画面のデフォルトフォント
TT MS Gothic : plain
TT MS Gothic : bold
TT MS Gothic : italic
TT MS Gothic : bold&italic
.Rprofile
## PDF のデフォルトフォント
setHook(packageEvent("grDevices", "onLoad"), function(...) {
    grDevices::pdf.options(family="Japan1GothicBBB"); ## ゴシック体
});

これだけで,とくに何も意識しなくてもデフォルトフォントを使って正しく描画されます。 なお,Mac OS XLinux では Rdevga がないので .Rprofile に画面へのプロットで使用するフォントの設定を加える必要があります。

フォントを指定する

デフォルトフォント以外を使いたい場合は,デバイスごとのフォントデータベースを意識する必要があるので少し面倒です。

画面に出力する場合

たとえば,明朝体で描画したい場合,出力先デバイスが画面ならば以下のようにします。

> names(windowsFonts()) ## フォントデータベースの内容を確認
> windowsFonts(mincho=windowsFont("MS Mincho")) ## 「MS 明朝」を登録
> par(family="mincho")
> plot(...)

標準では画面用のフォントデータベースには serif,sans,mono という名前の英語フォントしか登録されていません。 まず使用したい日本語フォントを適当な名前で登録し,その後で family でフォントを指定します。

PDF に出力する場合

PDF の場合は,あらかじめ Japan1 などの名前で日本語フォントが登録されています。 明朝体で描画したい場合には,以下のようにします。

> names(pdfFonts()) ## 確認
> pdf(file="plot.pdf", family="Japan1") ## 明朝体
> plot(...)

標準で使用できる日本語フォントとしては,以下のようなものがあります(環境依存です)。

family 書体 フォントファミリー
Japan1 明朝体 KozMinPro-Regular-Acro
Japan1HeiMin 明朝体 HeiseiMin-W3-Acro
Japan1Ryumin 明朝体 Ryumin-Light
Japan1GothicBBB ゴシック体 GothicBBB-Medium

画面にプロットしたものを PDF に保存する場合のトラブル

画面にプロットしたものを PDF に保存する場合には注意が必要です。 フォントを指定して画面にプロットしたものを PDF に保存すると,エラーが出て文字が出力されなかったり,警告が出て文字化けしてしまったりすることがあります。

こうしたトラブルを防ぐためには,画面にプロットする段階で family = "Japan1" などと指定する必要があります。 しかし,この場合もやはり警告が出て,画面上ではデフォルトフォントによる描画となってしまいます。

トラブルの原因はデバイスごとのフォントデータベースの内容が異なっているからです。 画面のプロットで使用した family が PDF のフォントデータベースに見つからなかったり,同じ family でもデータベースによって関連づけられているフォントが異なっていたりするために生じます。