[Matplotlib] 日本語を表示する方法

[Matplotlib] 日本語を表示する方法

タイトルとテキストに日本語を表示する方法

 Matplotlib を初期設定のまま使用していると、Axes.title() や Axes.text() の引数に日本語の文字列を渡しても、文字化けを起こしてしまいます。

# 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)

 matplotlib 日本語の文字化け

 タイトルやテキストに日本語を入力するときには、日本語を表示できるフォントファイルをフルパスで指定して FontProperties インスタンスを作成し、それを Axes.title() や Axes.text() の fontproperties に渡す必要があります。

フォントディレクトリのパスを取得

 Windows であれば、次のコードでフォントファイルの入ったディレクトリ(フォルダ)のパスを調べることができます。

from matplotlib import font_manager

# Windowsのフォントディレクトリのパスを取得
fd = font_manager.win32FontDirectory()

print(fd)
C:\Windows\Fonts

 
 macOS には一般に複数のフォントディレクトリが存在しています。
 次のコードでディレクトリのパスの一覧を取得できます。

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 ファイルを複数個まとめたものです。
 

入門 Python 3

新品価格
¥3,996から
(2019/8/6 11:45時点)

日本語を表示するコード

 matplotlib.font_manager から FontPropertiesクラスを読み込んで、タイトルとテキストに日本語を表示させるコードです。

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)

 matplotlib 日本語を表示