JupyterのR kernel使用時に日本語を含むグラフを描く

  • 8
    Like
  • 0
    Comment
More than 1 year has passed since last update.

Jupyterではいろいろなプログラム言語をkernelとして指定できます。Rもその1つで、インタラクティブに結果を表示しながら解析するのは楽しいし、効率的です。ただ、日本語フォントを含むグラフに関しては、R.exeに比べて、設定に少し癖があります。ここではうまくいったやり方を紹介します。

動作環境

Mac OS X 10.10.5(Yosemite)
R version 3.2.3
Xquartz 2.7.8
Ipython Notebookをhttp://localhost:8888で起動

うまくいったコード

#明示的にquartzデバイスを起動
quartz()
#font-familyをpar関数で指定
par(family = "HiraKakuProN-W3")
#plot関数で描画
plot(0,0, xlab = "日本語", ylab = "日本語")
#quartzデバイスを定位
dev.off()

  • quartzデバイスを明示的に起動しないで、par関数でフォントファミリーを指定すると描画そのものは日本語でなされますが、警告が1文字についき1回出てきます。

  • quartzデバイスの引数としてfamilyでフォントファミリーを指定しても文字化けのままです。

  • dev.off関数でquartzデバイスを停止しないとアプリケーションとして起動したXQuartz.appが起動しっぱなしになってしまいます。

今のところうまくいくやり方なので、これを使っていますが、もしかしたら何か意味のないこともやっているかもしれません。

2016年9月12日追記

上記のやり方では、うまく日本語が表示されなくなりました。原因を調査していますが、まだわかっていません。
対処法として以下のようにコードを書くと一応日本語を含む画像が表示できます。

暫定的な対処コード

#明示的にquartzデバイスを起動
#pngファイルに保存するようにtypeとfileを設定
quartz(type = "png", file = "test.png")
#font-familyをpar関数で指定
par(family = "HiraKakuProN-W3")
#plot関数で描画
plot(0,0, xlab = "日本語", ylab = "日本語")
#quartzデバイスを定位
dev.off()

次のセルをマークダウン形式にして画像を呼び出し

![testpng](test.png)

ここでtypeをpdfにしたいかもしれませんが、ブラウザによって表示がうまくいくものと行かないものがあります。Chromiumベースのブラウザ(Chrome, FireFox)は表示ができません。safariではうまく表示できました。