こんにちは、GMOアドマーケティングのS.Rです。
Matplotlibはデータ可視化のために機械学習エンジニアによく使われているツールです。ただデフォルトの環境ではMatplotlibで作成された図は日本語を正しく表示できません。
デフォルトの環境で例の図を作成
今回は三角関数sinを例として図を作成します。サンプルのコードは下記です。
1 2 3 4 5 6 7 8 9 |
import numpy as np import matplotlib.pyplot as plt t = np.arange(0.0, 2.0, 0.01) s = np.sin(2*np.pi*t) plt.plot(t, s) plt.title("三角関数sin") plt.xlabel('x') plt.ylabel('sin') plt.show() |
実行した結果は下記です。”三角関数” は正しく表示できませんでした。
日本語のフォントファイルをダウンロード
例としてNotoSansCJKjpをダウンロードします。
1 2 |
!wget https://noto-website-2.storage.googleapis.com/pkgs/NotoSansCJKjp-hinted.zip !unzip NotoSansCJKjp-hinted.zip |
NotoSansCJKjpのフォントを指定する
先ほどのサンプルのコードに
- font_manager下のfm,rcParamsをimport します。
- titleを表示する時にNotoSansCJKjpのフォントを指定します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
import numpy as np import matplotlib.pyplot as plt #font_manager下のfm,rcParamsをimport from matplotlib import font_manager as fm, rcParams t = np.arange(0.0, 2.0, 0.01) s = np.sin(2*np.pi*t) plt.plot(t, s) #NotoSansCJKjpを指定する fpath = 'NotoSansCJKjp-Regular.otf' prop = fm.FontProperties(fname=fpath) plt.title("三角関数sin",fontproperties=prop) plt.xlabel('x') plt.ylabel('sin') plt.show() |
実行した効果は下記です。titleに ”三角関数sin”が正しく表示できるようになりました。
まとめ
今日はMatplotlibで日本語を表示する方法を皆さんへ紹介しました。いかがでしたでしょうか。もし皆さんの日々のデータ分析の業務にお役に立てば幸いです。