WSL2 Ubuntu環境で作成したJupyterLabの、グラフの日本語文字化けを何とかする。

実際に作業をしているとグラフを描く必要が出てくるわけですが、いざ、やってみると項目の文字化けが発生するわけです。文字化けというよりは表示するフォントの問題です。

Windows版JupyterLab Desktop版を使っていたころは、Windowsにインストールされていたフォントを使えるので、

plt.rcParams["font.family"] = "MS Gothic"

などと書いておけばOKでしたが、WSL2の環境では無力でした。作業自体は母艦のWindowsでChromeブラウザを使っているわけですが、動かしているのはUbuntuですからねえ。

方針としては、IPAフォントを入れて、matplotlibの表示設定をそれに合わせるという事でレッツ・トライ

IPAフォントのインストール

インストール自体は apt で行えます。インストール後に fc-listコマンドでフォントリストに加わったかを確認します。

tomi@ubuntu:~$ sudo  apt install fonts-ipaexfont
(中略)
tomi@ubuntu:~$ fc-list | grep 'IPA'
/usr/share/fonts/opentype/ipaexfont-gothic/ipaexg.ttf: IPAexGothic,IPAexゴシック:style=Regular
/usr/share/fonts/opentype/ipaexfont-mincho/ipaexm.ttf: IPAexMincho,IPAex明朝:style=Regular
/usr/share/fonts/truetype/fonts-japanese-mincho.ttf: IPAexMincho,IPAex明朝:style=Regular
/usr/share/fonts/truetype/fonts-japanese-gothic.ttf: IPAexGothic,IPAexゴシック:style=Regular

あと念のためにmatplotlibのキャッシュを削除しておきます。

tomi@ubuntu:~$ ls ~/.cache/matplotlib/fontlist-v330.json
/home/tomi/.cache/matplotlib/fontlist-v330.json
tomi@ubuntu:~$ rm ~/.cache/matplotlib/fontlist-v330.json

設定ファイルの変更

まずは設定ファイルの場所を確認していきます。Jupyterlabで以下のようなpythonコードを実行して、ファイルの場所を表示します。環境によって異なってくると思います。

import matplotlib
print(matplotlib.matplotlib_fname())

私の場合には、/home/tomi/anaconda3/envs/jupyterlab/lib/python3.8/site-packages/matplotlib/mpl-data/matplotlibrc みたいに表示されましたので、これを vim なり emacs なりで編集していきます。

直すのは260行目付近

Note that font.size controls default text sizes.  To configure
special text sizes tick labels, axes, labels, title, etc., see the rc
settings for axes and ticks.  Special text sizes can be defined
relative to font.size, using the following values: xx-small, x-small,
mall, medium, large, x-large, xx-large, larger, or smaller

font.family:  IPAexGothic  <----- ここを変更してコメントアウト
#font.style:   normal
#font.variant: normal
#font.weight:  normal
#font.stretch: normal
#font.size:    10.0

ここまでで作業は完了。後は適当なデータセットを用意して日本語が表示されるかを確認してみてください。