非常に便利なMatplotlibですが、日本語でXY軸表記やLegend表記させようとしたところ、文字化けして困ったことはないでしょうか。日本語フォント設定を加えるだけで解消することができます。
フォント一覧を取得して日本語フォントを探し、Matplotlibを日本語フォント対応させる方法をご紹介したいと思います。
やること
・Matplotlibのインストール
・フォント一覧の取得
・日本語フォントを探す
・グラフ表示に日本語フォント設定を追加する
それでは順に見ていきましょう!
やること
Matplotlibのインストール
今回の前提ではあるのですが、Matplotlibをインストールしておきましょう。
pip install matplotlib
フォント一覧の取得
MatplotlibはPythonのデータ可視化ライブラリです。
米国やヨーロッパを含む世界中の開発者によって開発されています。
Pythonコミュニティでは広く利用され、データサイエンス、機械学習、科学研究などで
グラフやプロットを作成するために使用されています。
世界中で使われているものであり、日本がメインターゲットではないのですよね。
デフォルトでは日本語フォントにうまく対応しません。文字化けします。
その代わり、対応方法がちゃんと準備されています。
import matplotlib.font_manager
fonts = matplotlib.font_manager.findSystemFonts(fontpaths=None, fontext='ttf')
with open('FontList.txt', 'w', encoding='utf-8') as file:
for font in fonts:
file.write(font + '\n')
print(font)
「matplotlib.font_manager」を利用します。
実行すると「FontList.txt」へファイル出力します。
日本語フォントを探す
先ほどプリント出力で見つけられれば良いです。
もう少しやりやすくできるように「FontList.txt」を利用することもできます。
テキストエディタで開き、日本語フォント名を検索してみてください。
該当ファイルが入っていれば、インストール済みです。
後でご紹介する日本語フォント設定に、見つかったファイルパスを利用します。
こんな感じで、メイリオ(Meiryo)フォントが見つかりました。
日本語フォントの一例を挙げます。
MS ゴシック - msgothic.ttc
MS 明朝 - msmincho.ttc
Meiryo - meiryo.ttc
游ゴシック - yugothic.ttc
游明朝 - yumincho.ttc
この他にも日本語フォントは多数あります。
とりあえず日本語化でよければ、上記のどれかは見つけて使えば事足りるかと思います。
グラフ表示に日本語フォント設定を追加する
先ほど見つけた日本語フォントのパスを利用して、日本語対応したいと思います。
通常のmatplotに加えて、フォントプロパティを設定します。
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
font_path = "C:\Windows\Fonts\meiryo.ttc" # 実際のフォントファイルのパスに置き換えてください
japanese_font = FontProperties(fname=font_path)
「font_path」は先ほど見つけたフォントファイルのフルパスになります。
「C:\Windows\Fonts\meiryo.ttc」を設定しました。メイリオフォントです。
プロット表示側は次のようにします。
フォントプロパティ設定を追加します。
plt.xlabel("X軸ラベル", fontproperties=japanese_font)
plt.ylabel("Y軸ラベル", fontproperties=japanese_font)
plt.title("日本語フォント設定済みグラフ", fontproperties=japanese_font)
サンプルコード
日本語対応させて、グラフ表示する例をご紹介します。
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
# Meiryoフォントのパスを指定
font_path = "C:\Windows\Fonts\meiryo.ttc" # 実際のフォントファイルのパスに置き換えてください
# Meiryoフォントを使用するためのFontPropertiesを作成
japanese_font = FontProperties(fname=font_path)
# データ
data = [1, 4, 9, 16, 25]
# 日本語フォントを使用した例
plt.plot(data)
plt.xlabel("X軸ラベル", fontproperties=japanese_font)
plt.ylabel("Y軸ラベル", fontproperties=japanese_font)
plt.title("日本語フォント設定済みグラフ", fontproperties=japanese_font)
plt.show()
実行すると次のようになります。
設定しなかった場合は文字化けしています。
今回の日本語フォント設定を追加している場合は、うまく表示できています。
これで、Matplotlibを日本語フォント対応させて文字化けを解消させることができました。
今回は以上です。
本記事がお役に立てれば幸いです。
ここまで読んで頂きありがとうございました!