タイトルとテキストに日本語を表示する方法
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)
【GPT-4解説】日本語サポートフォントをインストールて、Matplotlibで日本語を表示します
Matplotlibで日本語を表示するためには、日本語をサポートするフォントを指定する必要があります。以下に具体的な手順を示します。
1. まず、日本語をサポートするフォントをインストールします。もしまだインストールしていないなら、例えば、Googleが提供するNotoフォントがおすすめです。このフォントは、多くの言語をサポートしており、日本語も含まれています。以下のコマンドでNotoフォントをダウンロードできます。
!apt-get -y install fonts-noto-cjk
2. 次に、Matplotlibの設定を変更して、デフォルトのフォントを先ほどインストールしたNotoフォントにします。これは以下のPythonコードで行えます。
import matplotlib.pyplot as plt
plt.rcParams[‘font.family’] = ‘Noto Sans CJK JP’
これで、Matplotlibに日本語を表示する準備が整いました。
3. 最後に、グラフのタイトルや軸のラベルに日本語を使ってみます。
plt.title(‘タイトル’)
plt.xlabel(‘x軸’)
plt.ylabel(‘y軸’)
plt.show()
これで、Matplotlibのグラフに日本語を表示することができます。なお、Matplotlibの設定は一度すると、その後のグラフ全てに適用されます。もし、特定のグラフだけに日本語フォントを適用したい場合は、以下のようにpropパラメータを使って、フォントを指定します。
from matplotlib import font_manager
font_path = ‘/usr/share/fonts/opentype/noto/NotoSansCJK-Regular.ttc’
font_prop = font_manager.FontProperties(fname=font_path)
plt.title(‘タイトル’, fontproperties=font_prop)
plt.xlabel(‘x軸’, fontproperties=font_prop)
plt.ylabel(‘y軸’, fontproperties=font_prop)
plt.show()
以上が、Matplotlibで日本語を表示する手順です