jupyternotebookでmatplotlibを使っているときに、表のx軸とy軸のラベルタイトルに日本語を入れたかったのに、ラベルが文字化けしました。
結構、苦戦したので、議事録として残す。
結論
デフォルトのままでmatplotlibの表ラベルに日本語を入れると、日本語フォントを勝手に引っ張ってきてもらえない。そのため、日本語フォントを引っ張ってくる記述をする。
Matplotlib が ver 3.1.0 で ttc ファイルにやっと対応してくれて、最新のmatplotlibであれば日本語フォントが提供可能とのこと。
通常のmatplotlibの記述に下記を加えて、日本語対応が可能になる
1 |
rcParams['font.sans-serif'] = ['Hiragino Maru Gothic Pro', 'Yu Gothic', 'Meirio', 'Takao', 'IPAexGothic', 'IPAPGothic', 'VL PGothic', 'Noto Sans CJK JP'] |
これらを加味した上で、pythonでmatplotlibに日本語表記の表ラベルを加えたい場合の宣言的な様な物は下記のようになる。
1 2 3 4 |
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で下記を記述して表を出してみよう
1 2 3 4 5 6 7 8 9 |
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であることで日本語フォントの対応ができるとは・・・
いい経験になりました。
表示されない人は最新バージョンであることやinstallできているかをチェックしよう
それでも、日本語フォントが表示されない場合は、最新のmatplotlibになっているかどうかや、そもそもmatplotlibがインストールできているかの確認してみましょう。