ソースに絡まるエスカルゴ

貧弱プログラマの外部記憶装置です。

【python/matplotlib】matplotlibの表示で日本語を使う方法

 以前matplotlibを使った記事を書きました。

 これらの時には書きませんでしたが、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の表示で日本語を使う方法になります。

 この他にも参考資料のページ様のところで色々と方法が紹介されていますが、別の端末で使うことを考えるとフォントファイルの有無の問題なども出てくるため、ライブラリを使って日本語を使えるようにするのが最もよいかと自分は思います。


・参考資料