====== 概要 ======
matplotlibで使われる文字の大きさやフォントの種類の設定方法を紹介します。
もっとも簡単なのは、グラフに登場するすべてのフォントを同じ大きさ、同じフォントにする場合で、plt.rcParamを使うと便利です。
以下ではフォントサイズを20ptにしてフォントをセリフ体のDejaVu Serifにしています。
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams["font.family"] = "DejaVu Serif" # 使用するフォント
plt.rcParams["font.size"] = 20 # 文字の大きさ
x = np.arange(-5,5,0.1)
y = np.sin(x)
plt.title("graph")
plt.xlabel("x")
plt.ylabel("y")
plt.plot(x, y, label="sin x")
plt.legend()
plt.tight_layout() # フォントサイズが大きくなると文字が描画領域からはみ出るので、プロット全体に合わせて描画領域を大きくする。
plt.show()
{{:python:matplotlib:font.png?direct&400|}}
なお、グラフに含まれる文字はサンセリフ体が推奨されます(matplotlibのデフォルトはサンセリフ体のDejaVu Sansになっています)。
matplotlibではotf形式またはttf形式のフォントが利用できます。
使用可能なフォント一覧は次のように調べることができます。
$ python
>>> import matplotlib.font_manager
>>> flist = matplotlib.font_manager.get_fontconfig_fonts()
>>> names = [matplotlib.font_manager.FontProperties(fname=fname).get_name() for fname in flist]
>>> print(names)
エラーが出る場合
>>> import matplotlib.font_manager
>>> matplotlib.font_manager.get_fontconfig_fonts() # あるいは matplotlib.font_manager.findSystemFonts()
ttc形式のフォントは使用できないそうです。
* [[https://qiita.com/yniji/items/3fac25c2ffa316990d0c]]
以下ではもう少し細かい設定を紹介します。
====== フォントサイズの設定 ======
フォントのサイズを個別に設定する場合は、各文字列の出力のときに fontsize を指定します。
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(-5,5,0.1)
y = np.sin(x)
plt.title("graph", fontsize = 20)
plt.xlabel("x", fontsize = 20)
plt.ylabel("y", fontsize = 20)
plt.plot(x, y, label="sin x")
plt.legend(fontsize = 20)
plt.tick_params(labelsize = 20) # メモリの数字のフォントサイズを設定
plt.tight_layout()
plt.show()