以前matplotlibを使った記事を書きました。
- 【python/matplotlib】matplotlibを使ってグラフを作成してみる - ソースに絡まるエスカルゴ
- 【python/matplotlib/PySide6】matplotlibのグラフをPySide6のGUIに組み込む - ソースに絡まるエスカルゴ
これらの時には書きませんでしたが、matplotlibのデフォルトではグラフタイトルなどに日本語が表示できないという問題がありました。
今回はその問題を解決してmatplotlibの表示で日本語を使うようにする方法の備忘録になります。
基本的には参考資料に挙げているページ様の内容そのままなので、詳しくはそちらを参照してください。
では、始めます。
・japanize_matplotlibを使う
色々と方法がありますが、japanize_matplotlibライブラリをimportするのが最も手軽で確実だと思います。
以下のpipコマンドでインストールできます。
$ pip install japanize_matplotlib
インストールができたら以下のようにimportして使うだけです。
・japanize_test.py
# -*- coding: utf-8 -*- import japanize_matplotlib # importするだけ import matplotlib.pyplot as plt def main(): # x, yのデータ x_data = [180,211,224,235,247,256,265,271,275,279,284,287,289] y_data = [357,337,329,322,315,311,305,301,298,295,293,293,290] # グラフオブジェクト。200dpiなので縦横がそれぞれ「3*200=600 pixel」の大きさになる fig = plt.figure(figsize=(3, 3), dpi=200) # グラフの余白設定 fig.subplots_adjust(left=0.2, right=0.9, bottom=0.15, top=0.9) # 1行1列の1番目の位置にグラフを指定 ax = fig.add_subplot(1, 1, 1) ax.scatter(x_data , y_data) # 散布図作成 ax.set_title("グラフタイトル") # グラフタイトル ax.set_xlim(min(x_data)-10, max(x_data)+10) # x軸の最小値、最大値を設定 ax.set_ylim(min(y_data)-10, max(y_data)+10) # y軸の最小値、最大値を設定 ax.set_xlabel("x軸") # x軸の名前を設定 ax.set_ylabel("y軸") # y軸の名前を設定 plt.show() # グラフを表示 if __name__ == '__main__': main()
実行すると以下のようにグラフタイトルと軸名がちゃんと日本語で表示されています。
ちなみに「import japanize_matplotlib」をコメントアウトすると、以下のように日本語部分が□となり表示されなくなります。
以上がmatplotlibの表示で日本語を使う方法になります。
この他にも参考資料のページ様のところで色々と方法が紹介されていますが、別の端末で使うことを考えるとフォントファイルの有無の問題なども出てくるため、ライブラリを使って日本語を使えるようにするのが最もよいかと自分は思います。
・参考資料