Matplotlibの日本語化でハマったよ♪


【DQN】秘書問題のところで、Matplotlibのグラフの見出し等の日本語化が出来ずに豆腐になっていた問題。。。解決したのでまとめておく。

結論からいうと、基本は、以下の参考のとおりでできました。
そして、理由はわかりませんが、それ以外はまったくできませんでした。

【参考】
【matplotlib】日本語の設定@keisukeのブログ

前提の環境
・Windows10
・Python3
・Anaconda3
手順は以下のとおり
・matplotlibの設定ファイルの場所を探して、matplotlibrcをコピー
・日本語に対応したフォントのダウンロードとコピー
・matplotlibの設定ファイルを書き換える
・フォントのキャッシュの削除

・matplotlibの設定ファイルの場所を探して、matplotlibrcをコピー

これはpythonを実行した後に、以下のコマンドでいけます

>>>import matplotlib
>>>matplotlib.matplotlib_fname()

以下具体的に実行したところ

>python
Python 3.5.2 |Anaconda 4.2.0 (64-bit)| (default, Jul  5 2016, 11:41:13) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import matplotlib as mpl
>>> mpl.matplotlib_fname()
'C:\\Users\\your_name\\Anaconda3\\lib\\site-packages\\matplotlib\\mpl-data\\matplotlibrc'

そして肝心なことは、参考から引用すると
「ユーザ設定ファイルを作りましょう。 見つけたデフォルト設定ファイル(matplotlibrcのことです)を、C:\Users\your_name\.matplotlib\以下にコピーしてください。matplotlibは、このフォルダにmatplotlibrcを見つけると、デフォルトの設定ファイルより優先します。」
ということで、matplotlibrcをC:\Users\your_name\.matplotlib\にコピーします。

・日本語に対応したフォントのダウンロードとコピー

リンク先のページから以下の二種類をダウンロードしました。
※どちらかでもいいですが、
IPAexフォント Ver.003.01

IPAexゴシック(Ver.003.01)
ipaexg00301.zip(3.92MB) 

IPAフォント ダウンロードページDownload IPA Fonts

4書体パック(Ver.003.03)
 IPAfont00303.zip(19.1 MB) 

利用するには書体名が必要です。
4書体パックについては以下の参考サイトにありました、IPAexゴチックの方は上記参考からIPAexGothicらしいです。
【参考】
3分でmatplotlibを日本語対応させる

font name family
ipaexg.ttf IPAexGothic 不明
ipagp.ttf IPAPGothic [sans-serif]
ipamp.ttf IPAPMincho [sans-serif]
ipam.ttf IPAMincho [sans-serif]
ipag.ttf IPAGothic [sans-serif]

そして、コピーします。
「ダウンロードして解凍すると、ipaexg.ttfというファイルがあるはずです。 それを、先ほど見つけたmatplotlibのデフォルト設定ファイルの置いてあるフォルダにあるfonts/ttf/フォルダにコピーしてください。
なお、このfontsフォルダは、matplotlibをバージョンアップなどすると書き換えられてしまうおそれがあるようです。 もしもそうした事態が起きたら、もう一度ipaexg.ttfをコピーしてください。」
matplotlibのデフォルト設定ファイルの置いてあるフォルダ⇒

C:\Users\your_name\Anaconda3\Lib\site-packages\matplotlib\mpl-data\fonts\ttf\

※上記の5つを入れました

・matplotlibの設定ファイルを書き換える

「先ほどコピーした、あなたのmatplotlibrcファイルを開いてください。」
今回は以下にコピーしています。

C:\Users\your_name\.matplotlib

※Jupyter Notebookで開いて以下を適当なところに追記して修正しました

font.family : IPAexGothic

ちなみに4書体フォントについては追記していません。

・フォントのキャッシュの削除

最後にフォントのキャッシュを削除します。
「matplotlibは使うフォントのキャッシュを持っていて、それを削除しないと設定が読み込まれません。 デフォルト設定ファイルの存在するフォルダ、そしてユーザ設定ファイルの存在するフォルダにあるfontList.cacheもしくはfontList.py3k.cacheファイルを削除してください。」
デフォルト設定ファイルの存在するフォルダ⇒たぶんオリジナルのmatplotlibrcのコピー元フォルダ
ユーザ設定ファイルの存在するフォルダ⇒matplotlibrcのコピー先フォルダ
ということで、以下のフォルダから上記二つのcacheファイルで存在していたものを削除しました。

C:\Users\your_name\Anaconda3\Lib\site-packages\matplotlib\mpl-data
C:\Users\your_name\.matplotlib

※ちなみにコピー先にはfontList.py3k.cacheがすぐできます。

・日本語のグラフが描けました

import matplotlib.pyplot as plt
"""
plt.rcParams['font.family'] = 'IPAPGothic' #全体のフォントを設定
plt.rcParams["figure.figsize"] = [20, 12] # グラフのサイズを指定
plt.rcParams['font.size'] = 40 #フォントサイズを設定 default : 12
plt.rcParams['xtick.labelsize'] = 40 # 横軸のフォントサイズ
plt.rcParams['ytick.labelsize'] = 15 # 縦軸のフォントサイズ
"""
plt.plot([1, 2, 3, 4])
plt.xlabel('簡単なグラフ')
plt.show()

上記のフォント指定は必須ではありません。単にこれでフォント指定できるようです

フォント指定を有効にすると、。。

まとめ

・簡単にmatplotlibで日本語使える記事もあるけど、導入は苦労した
・今回設定ファイル等をいじることにより日本語が使えるようになった