前回「VS Code で Jupyter を動かしてみる」をやってみましたがグラフ表示の matplotlib での日本語表示がうまくいきませんでした。
いろいろ調べて出来るようになったので記録しておきます。
方法は1つだけではなさそうですが、これでいくことにしました。
###1. 環境
OS:Windows 10
VS Code:1.43.2
拡張機能:Anaconda Extension Pack 1.0.1
Pythonインタープリター:3.7.3 64-bit
###2. ビフォー
import matplotlib.pyplot as plt
flg, ax = plt.subplots()
x = [1, 2, 3, 4, 5]
y = [3, 6, 4, 8, 5]
labels = ['バナナ', 'パイナップル', 'みかん', 'いちご', 'メロン']
ax.bar(x, y, tick_label=labels, label='好きなフルーツ')
ax.legend()
plt.show()
上のソースを実行したところ、日本語表示したいところが長四角の豆腐になってしまいます。
Jupyter notebook で試してみても状況は同じです。
###3. 対応
####3-1.フォントファイルの取得
OSにあらかじめインストールされているフォントを使用してもいいのですが、Linuxなどの環境でも同じフォントを使用したいのでIPAexゴシックを使用することにしました。
https://ipafont.ipa.go.jp/ からダウンロードします。
これを解凍してフォントファイル(拡張子 tff)を取得します。
ipaexg.tff は IPAexゴシック
ipaexm.tff は IPAex明朝
です。
####3-2.フォントファイルの配置
matplotlibの設定ファイルを探します。
import matplotlib as mpl
print(mpl.matplotlib_fname())
私の環境の場合はここにありました。
C:\ProgramData\Anaconda3\lib\site-packages\matplotlib\mpl-data\matplotlibrc
上記からの相対パスとしての
../fonts/ttf
すなわち
C:\ProgramData\Anaconda3\lib\site-packages\matplotlib\mpl-data\fonts/ttf
にフォントファイル ipaexg.ttf を配置します。
####3-3.matplotlib側での設定
C:\Users\<username>\.matplotlib\fontlist-v300.json
を削除します。
キャッシュファイルがあればそれも削除します。
ここでいったん VS Code を再起動しておきます。
###4.アフター
最初のソースにフォントを明示的に指定するために
plt.rcParams['font.family'] = 'IPAexGothic'
を挿入します。
import matplotlib.pyplot as plt
plt.rcParams['font.family'] = 'IPAexGothic'
flg, ax = plt.subplots()
x = [1, 2, 3, 4, 5]
y = [3, 6, 4, 8, 5]
labels = ['バナナ', 'パイナップル', 'みかん', 'いちご', 'メロン']
ax.bar(x, y, tick_label=labels, label='好きなフルーツ')
ax.legend()
plt.show()
Jupyter notebook でも試してみます。大丈夫でした。
###5.このあとやりたいこと
scikit-learn を用いて分析したデータをグラフにしてみたい。
###6.参考にさせていただいたQiitaの先輩
@Kanatani28 さん https://qiita.com/maroKanatani/items/3b080c639395bba7795a
@yniji さん https://qiita.com/yniji/items/3fac25c2ffa316990d0c