4.5 日本語フォントの利用

IPAが配布しているIPAexという日本語用フォント ttps://ipafont.ipa.go.jp/  をダウンロードする。
展開したファイルはこちら。
ipaexg.ttf をmatplotlibのフォント用フォルダに置く。
matplotlibの設定ファイル matplotlibrc でipaexg.ttf を読み込む設定をする。
フォト用キャッシュファイルを削除する。
In [4]:
#4-05-1
# フォントを格納するフォルダを調べる

import matplotlib
matplotlib.matplotlib_fname()
Out[4]:
'D:\\sys\\Anaconda3\\envs\\book3\\lib\\site-packages\\matplotlib\\mpl-data\\matplotlibrc'

pythonの仮想環境のパスは CONDA_PREFIX という環境変数に設定されている。

  [Windows] echo %CONDA_PATH%
  [macOS]   echo $CONDA_PATH

下の例では、使用OSは Windows10 で anaconda は D:\\sys\\anaconda3 にインストールされていて、 python仮想環境の名前は book3 である。

[matplotlib の設定ファイル]
    D:\sys\anaconda3\env\book3\Lib\site-packages\matplotlib\mpl-data\matplotlibrc
[ttf fontを置くパス]
    D:\sys\anaconda3\env\book3\Lib\site-packages\matplotlib\mpl-data\fonts\ttf

ipaexm.ttf, ipaexg.ttf を mpl-data/fonts/ttf/ の下に置く。 matplotlibrc の248行目辺りのfont.familyを定義しているところに以下の定義を追加する。

font.family: IPAexGothic
##font.family: sans-serif
sans-serifのコメントを'#'を2個にしないとfont.familyをduplicateで定義しているというWarningが出る。何故? matplotlibのキャッシュファイルを削除する。 matplotlib.get_configdir() で表示されるフォルダの中の fontList.json がキャッシュファイルなので、これを削除する。
(base) C:\Users\nitta\.matplotlib>dir
 ドライブ C のボリューム ラベルは Windows です
 ボリューム シリアル番号は 0080-C089 です

 C:\Users\nitta\.matplotlib のディレクトリ

2020/07/23  15:36    <DIR>          .
2020/07/23  15:36    <DIR>          ..
2019/08/28  16:28            66,357 fontlist-v310.json
2020/07/23  15:36           212,691 fontlist-v330.json
2019/09/01  17:27    <DIR>          tex.cache
               2 個のファイル             279,048 バイト
               3 個のディレクトリ  287,234,842,624 バイトの空き領域
In [2]:
#4-05-2
# matplotlibのキャッシュファイルへのパスを表示する
matplotlib.get_configdir()
Out[2]:
'C:\\Users\\nitta\\.matplotlib'

jupyter notebook を起動し直すと、使用フォントがIPAexGothicになっていることを確認する。

In [3]:
#4-05-3
#使用されるフォントを調べる
import matplotlib
matplotlib.rcParams['font.family']
Out[3]:
['IPAexGothic']
In [5]:
#4-05-4
%matplotlib inline
import matplotlib.pyplot as plt

plt.figure()
plt.title('日本語の表示')
plt.xlabel('x軸ラベル')
plt.ylabel('y軸ラベル')

plt.show()
In [6]:
#4-05-5
#IPAexフォントを使用して数式を出力する

fig, ax = plt.subplots(figsize=(3,3))

ax.text(0.1, 0.9, '数式を書きます', size=15)

# square root 3√x
ax.text(0.1, 0.7, r'$\sqrt{3}{x}$', size=15)

# subscript, superscript
ax.text(0.1, 0.5, r'$\alpha_i + \beta^i$', size=15)

# summation
ax.text(0.1, 0.2, r'$\sum_{i=0}^{\infty} x_i$', size=20)

plt.show()
In [ ]: