Using CJK Fonts in R and ggplot2


ツイッターでggplot2で日本語使えるの?的な話があったので、昔書きかけた記事を中途半端に描き上げてみました。
結論から言うと使えるんですが、OSとかデバイスが何か、とかでいろいろ違うので、完全に理解するのは結構大変です。
あとRのグラフィックスはbaseベースとgridベースがあるんですが、入門書では絶対にbaseベースなので、gridベースになじめない、このあたりも誤解を招く原因になってるような気がする。描画の自由度はgridベースのほうが大きいです。お手軽なプロットならbaseだったんだけど、gridベースのグラフィックスパッケージが出てきてgridでもお手軽にできるようになりつつある、という現状なのかな。

おまじない

面倒な解説は不要、という人は以下の例で。

library(ggplot2)

d <- data.frame(x=1:2, y=1:2, t=c("あ","い"))

## PDFで出力する場合は簡単
p <- ggplot(d, aes(x, y, label=t)) + geom_text() + opts(title="う")
ggsave("out.pdf", p, family="Japan1GothicBBB")

## MacでQuartz(デフォルト)を使う場合
quartzFonts(HiraMaru=quartzFont(rep("HiraMaruProN-W4", 4)))
ggplot(d, aes(x, y, label=t)) + geom_text() + opts(title="う") + theme_grey(base_family="HiraMaru")
grid.gedit("GRID.text", grep=TRUE, global=TRUE, gp=gpar(fontfamily="HiraMaru"))

## Windowsでwindow(デフォルト)を使う場合
windowsFonts(Mei=windowsFont("Meiryo"))
ggplot(d, aes(x, y, label=t)) + geom_text() + opts(title="う") + theme_grey(base_family="Mei")
grid.gedit("GRID.text", grep=TRUE, global=TRUE, gp=gpar(fontfamily="Mei"))

windows環境とか試してないけど、多分イケルと思います。もしうまく行かなかったら教えてください。
latticeでは日本語どうなってるんだろう?

Continue reading