概要

統計処理を得意とするプログラミング言語にR言語というものがあり、私は統計処理にこのRを使っています。

今回、Rの環境としてPythonでよく使われるJupyter Labを使用してみたのですが、Rのグラフのプロットで日本語をうまく表示できず、苦労しました。

ここでは、Rのプロットで日本語を表示する方法について紹介したいと思います。

環境

  • macOS Catalina
  • R 4.0.2
  • Jupyter Lab 2.2.6

原因

今回の問題は、グラフのプロット等に日本語を含めることができないというものです。含められないためその部分が豆腐として表示されてしまいます。英語については、通常通りプロットされました。

私が昔使用していたLinuxの環境ではこのようなことはなく、おそらくmacOSで発生するものだと思われます。

私はあまりJupyter Labに詳しくはないのですが、色々と調べたり試してみたりすると、X11を使ってプロットを描画しているということが分かりました。

つまりこの処理に問題があるのだと思います。

ここでさらに調べてみると、X11に日本語のフォントが存在しないためではないか、というものがありました。
つまり、X11に日本語のフォントを含めてあげれば問題が解決するということです。

解決方法

X11に日本語のフォントを含めるために色々と調べてみたのですが、これは非常に面倒な作業です。
そのため、この方法は採用しないことにしました。

他の方法を探していると、Appleが公式に推奨しているXQuartzというX11のソフトウェアがあるということが分かりました。
Rではこのような描画のソフトウェアを変更することが可能なので、試しにXQuartzを使って描画してみると、日本語がちゃんと表示されるようになりました。

XQuartzは次のサイトからダウンロードしたファイルを使うことでインストールできるので、インストールしておきましょう。

XQuartz

XQuartzを使った描画は次のように、xquartz()dev.off()で描画処理を囲むことでできます。

quartz()
plot(x, main="日本語の文字")
dev.off()

しかし、毎回このような処理を記述するのは面倒です。

そこで、デフォルトの設定としてXQuartzを使うようにします。

この設定は環境変数として行うので、今回は.zshrcに次の文字列を追記しました。

export R_DEFAULT_DEVICE="quartz"

これで、デフォルトでXQuartzを使って描画されるようになり、わざわざquartz()などと記述しなくても日本語がしっかりと描画されるようになりました。

最後に

この問題の解決はかなりの時間がかかりました。

理由として、あまり情報が少ないというのがあげられるのですが、やはりJupyter Labを使ってRを記述する人が少ないということなのかなと思います。