ubuntu上のXなし環境等でRのグラフに日本語を使う方法

ググったけど無かったので書いておく。

インストール済みフォントの確認

インストール済みのフォント一覧はfc-listコマンドで出せる。

# fc-list
DejaVu Serif,DejaVu Serif Condensed:style=Condensed,Book
DejaVu Serif,DejaVu Serif Condensed:style=Condensed Bold Italic,Bold Italic
DejaVu Serif,DejaVu Serif Condensed:style=Condensed Bold,Bold
DejaVu Sans,DejaVu Sans Condensed:style=Condensed Oblique,Oblique
(以下略)

上記の中に日本語があるかチェックする。無ければ次節でフォントをインストールする。

日本語フォントのインストール

ここに日本語フォントのubuntuパッケージ一覧が載っている。
特にこだわりなければ適当にIPAゴシックをインストール。(なお、IPAゴシックのパッケージはtransitionalなdummyパッケージらしく、apt-get install するとIPA明朝とかも一式セットに成った新パッケージが入る模様)

# apt-get install otf-ipafont-gothic
(略)

fc-listのオプションを以下のようにするとR上で必要なfamily名だけ出せるので見やすくなる。

# fc-list : family
DejaVu Serif,DejaVu Serif Condensed
DejaVu Serif,DejaVu Serif Condensed
DejaVu Serif,DejaVu Serif Condensed
(略)
IPAゴシック,IPAGothic
(略)
IPA Pゴシック,IPAPGothic
(略)
IPA明朝,IPAMincho
(略)

IPAGothicとかIPAMinchoとかがfamily名。

Rからpar関数でfont family名を指定

par関数のfamily引数で上記で確認したfamily名を指定する。例えば、

par(family="IPAMincho")
png("graph.png",width=640,height=480)
x <- runif(10,0,1)
y <- runif(10,0,1)
plot(x,type="l",xlab='ラベル1',ylab='漢字も可能',col=1)
par(new=T)
plot(y,type="l",xlab='',ylab='',col=2,axes=F)
legend(9,1,c("凡例1","その2"),col=c(1,2))
dev.off()

という風にラベルや凡例のところに日本語を書いても文字化けしなくなる。