記事内容
以下の画像のように、日本語を使ってmatplotlibのグラフ表示を行えるようにする。
状況
matplotlibを用いて折れ線グラフを生成しようとしていた時のこと。日本語のタイトルや、日本語のラベル値を設定しようとしていた。以下のプログラムは、例として用意したプログラムである。
import sys
import matplotlib.pyplot as plt
def main():
section = ["りんご", "みかん", "ぶどう", "メロン"]
# 日本語ラベルを指定
x = range(len(section))
plt.xticks(x, section)
# グラフ生成
plt.xlabel("日本語のラベル")
plt.ylabel("ylabel")
plt.ylim(0, 15)
plt.grid()
y = [12, 6, 4, 10]
plt.plot(x, y, marker="o")
plt.title('日本語のタイトル')
plt.savefig("japanese_matplotlib.png")
if __name__ == '__main__':
sys.exit(main())
以下のコマンドで実行する。
python3 japanese_matplotlib.py
そうすると、以下のようなエラーと画像が生成される。
~/japanese_matplotlib.py:20: UserWarning: Glyph 26085 (\N{CJK UNIFIED IDEOGRAPH-65E5}) missing from current font.
plt.savefig("japanese_matplotlib.png")
...
このように、matplotlibはデフォルトで日本語が使えない。
解決方法
解決方法としては、追加で日本語版をインストールする必要がある。どうやらanacondaにはなく、pipにしか対応していないらしいので注意が必要。
以下のコマンドを実行する。
pip3 install japanize_matplotlib
なぜjapaneseではなくjapanizeなのかが疑問だが、以下の内容をプログラムに追加する。
import japanize_matplotlib
importするだけで、グラフを生成した時に日本語がしっかりと表示される。
注意点
上記でも記述した通り、importするだけで日本語対応することができる。逆に言えばimportしかしないため、フォーマッターによっては削除されてしまうことがある。その場合は設定を変える必要がある。