タイトルとテキストに日本語を表示する方法
Matplotlibを初期設定のまま使用していると、Axes.title() や Axes.text() の引数に日本語の文字列を渡しても、文字化けしてしまいます。
# MATPLOTLIB_TEXT_JAPANESE
# In[1]
# Figureを作成してAxesを追加
fig = plt.figure(figsize=(5, 5))
ax = fig.add_subplot(111)
# Axesのタイトルの設定
ax.set_title("文字化けします", size=12)
# Axesにテキストを追加
ax.text(0.5, 0.5, "パイソン", size=40)

タイトルやテキストに日本語を入力するときには、日本語を表示できるフォントファイルをフルパスで指定して FontProperties インスタンスを作成し、それを Axes.title() や Axes.text() の fontproperties に渡す必要があります。
フォントディレクトリのパスを取得
Windowsであれば、次のコードでフォントファイルの入ったディレクトリ(フォルダ)のパスを調べることができます。
# In[2] from matplotlib import font_manager # Windowsのフォントディレクトリのパスを取得 fd = font_manager.win32FontDirectory() print(fd) # C:\Windows\Fonts
macOS には一般に複数のフォントディレクトリが存在しています。
次のコードでディレクトリのパスの一覧を取得できます。
# In[3] from matplotlib import font_manager # macOSのフォントディレクトリ一覧を取得 fd = font_manager.OSXFontDirectories() print(fd) # ['/Library/fonts', 'Network/Library/Fonts/', ...]
Windows や macOS において、フォントは .ttf拡張子のついた TrueType Font 形式、もしくは .ttc拡張子のついた TrueType Collection 形式のファイルに保存されています。TrueType Collection ファイルは TrueType Font ファイルを複数個まとめたものです。
日本語を表示するコード
matplotlib.font_manager から FontPropertiesクラスを読み込んで、タイトルとテキストに日本語を表示させるコードです。
# In[4]
from matplotlib.font_manager import FontProperties
# MSゴシック
fp_1 = FontProperties(fname='C:\WINDOWS\Fonts\msgothic.ttc', size=16)
# MS明朝
fp_2 = FontProperties(fname='C:\WINDOWS\Fonts\msmincho.ttc', size=30)
# Figureを作成してAxesを追加
fig = plt.figure(figsize=(5, 5))
ax = fig.add_subplot(111)
# Axesのタイトルを設定
ax.set_title("日本語を表示", fontproperties=fp_1)
# Axesにテキストを追加
ax.text(0.5, 0.5, "パイソン", fontproperties=fp_2)

コメント