広告

jupyternotebook環境上でmatplotlibの表に日本語フォントを使う

jupyternotebookでmatplotlibを使っているときに、表のx軸とy軸のラベルタイトルに日本語を入れたかったのに、ラベルが文字化けしました。

結構、苦戦したので、議事録として残す。

結論

デフォルトのままでmatplotlibの表ラベルに日本語を入れると、日本語フォントを勝手に引っ張ってきてもらえない。そのため、日本語フォントを引っ張ってくる記述をする。

Matplotlib が ver 3.1.0 で ttc ファイルにやっと対応してくれて、最新のmatplotlibであれば日本語フォントが提供可能とのこと。

通常のmatplotlibの記述に下記を加えて、日本語対応が可能になる

rcParams['font.sans-serif'] = ['Hiragino Maru Gothic Pro', 'Yu Gothic', 'Meirio', 'Takao', 'IPAexGothic', 'IPAPGothic', 'VL PGothic', 'Noto Sans CJK JP']

 

これらを加味した上で、pythonでmatplotlibに日本語表記の表ラベルを加えたい場合の宣言的な様な物は下記のようになる。

import matplotlib.pyplot as plt
from matplotlib import rcParams
rcParams['font.family'] = 'sans-serif'
rcParams['font.sans-serif'] = ['Hiragino Maru Gothic Pro', 'Yu Gothic', 'Meirio', 'Takao', 'IPAexGothic', 'IPAPGothic', 'Noto Sans CJK JP']

 

仕組みを理解したら、matplotlibで下記を記述して表を出してみよう

import matplotlib.pyplot as plt
from matplotlib import rcParams
rcParams['font.family'] = 'sans-serif'
rcParams['font.sans-serif'] = ['Hiragino Maru Gothic Pro', 'Yu Gothic', 'Meirio', 'Takao', 'IPAexGothic', 'IPAPGothic', 'Noto Sans CJK JP']

plt.plot([1, 2, 3, 4])
plt.xlabel('これでx軸に日本語フォントが表示されます')
plt.ylabel('これでy軸に日本語フォントが表示されます')
plt.show()

上記を記述して、以下の様な表が出てきたら成功です。

matplotlibの表に日本語フォントを表記させる

いろんな記事を見ましたが、フォントのダウンロードとアップロードの作業がうまくいかず悩んでいましたが、最新のmatplotlibであることで日本語フォントの対応ができるとは・・・

いい経験になりました。

表示されない人は最新バージョンであることやinstallできているかをチェックしよう

それでも、日本語フォントが表示されない場合は、最新のmatplotlibになっているかどうかや、そもそもmatplotlibがインストールできているかの確認してみましょう。