matplotlibで日本語を使う

はじめに

普段はPython3 + JupyterLabで作業しています.JupyterLab(GitHub)はJupyter notebookの進化版?みたいなやつです.
まだベータ版で拡張機能が少し寂しいですがそれでもかなり使いやすいです.

さて今回の話題ですが,Jupyter上でグラフ描画するときにお馴染みのmatplotlibの設定についてです.グラフタイトルや軸ラベルに日本語を使えるようにしたかったので,その手順についてまとめました.

参考にしたページ

3分でmatplotlibを日本語対応させる – Qiita

matplotlibで日本語 – Qiita

游フォントがとにかくややこしい話 – アセトアミノフェンの気ままな日常

なにもしない状態

特に設定しないと,日本語を扱うことはできません.

In [1]:
#import
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
In [2]:
x = np.linspace(-np.pi, np.pi, 101)
plt.plot(x, np.cos(x))
plt.title("コサインカーブ")
plt.xlabel("x軸")
plt.ylabel("y軸")
Out[2]:
<matplotlib.text.Text at 0xae0194e5c0>

豆腐になりますね.これをどうにかします.

日本語を扱えるようにする

簡単に言えば,日本語対応のフォントにしてやればOKです.matplotlib.font_managerなるものを使います.とりあえずコードはこんな感じ.

In [3]:
#import
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

#以下を追加
from matplotlib.font_manager import FontProperties
In [4]:
#フォントファイルを指定してあげる
fp = FontProperties(fname=r'C:\WINDOWS\Fonts\yugothic.ttf', size=14)
In [5]:
x = np.linspace(-np.pi, np.pi, 101)
plt.plot(x, np.cos(x))

#fontpropertiesを明示的に指定する
plt.title("コサインカーブ", fontproperties=fp)
plt.xlabel("x軸", fontproperties=fp)
plt.ylabel("y軸", fontproperties=fp)
Out[5]:
<matplotlib.text.Text at 0xae01a66be0>

豆腐がなくなりましたね.WindowsのFontsフォルダにあるフォントファイルを利用しています.環境によっては,多少パスが変わることに注意が必要.(特にMac)

基本的に游ゴシック系を利用すれば良いと思いますが,Windowsに入っている游フォントがけっこうややこしいです.私も詳しくないので,游フォントがとにかくややこしい話 – アセトアミノフェンの気ままな日常が参考になりました.バージョンによっフォントファイル名がかなり変わっています.適宜上記コードのパスを書き換えて下さい.

ちなみに私は,IPAフォントなるものを使っています.Windowsには搭載されていないので,IPAフォントのダウンロードからダウンロードし,C:\WINDOWS\Fonts\あたりに放り込めば使えるようになります.

In [6]:
#フォントファイルを指定してあげる
#IPAフォントに変更
fp_ipa = FontProperties(fname=r'C:\WINDOWS\Fonts\ipag.ttc', size=14)

x = np.linspace(-np.pi, np.pi, 101)
plt.plot(x, np.cos(x))

#fontpropertiesを明示的に指定する
plt.title("コサインカーブ", fontproperties=fp_ipa)
plt.xlabel("x軸", fontproperties=fp_ipa)
plt.ylabel("y軸", fontproperties=fp_ipa)
Out[6]:
<matplotlib.text.Text at 0xae01c28cc0>

おわりに

日本語を使えるようにする方法はこれだけではないので(参考ページ参照),自分の好きなやり方で好きなフォントを使えばいいと思います.

ただ今回の方法はローカルマシンのフォントファイルを指定しているので,notebookを他のマシンで動かすときには注意が必要というのが気になる点.個人的には,人とnotebookを共有したりすることは今のところないので,しばらくはこの方法でいこうかなと思っています.今回は以上です.

1