
【python】matplotlibで日本語を使用する手順【fontダウンロード不要】
概要
matplotlibで日本語が使えるようにする(下図参照)
手順
1. matplotの設定ファイル(matplotlibrc)の場所を探す
2. matplotlibrcファイルがある場所まで移動する
3. フォントの指定を行っている場所を書き換える
4. matplotlibrcを再読み込みして、設定を反映させる
5. 日本語が正しく表示されるかチェックする
==================================================
matplotの設定ファイル(matplotlibrc)の場所を探す
以下のプログラムを実行する
import matplotlib as mpl
print("設定ファイルの場所\n\t", mpl.matplotlib_fname())
出力
設定ファイルの場所
C:\Users\user\AppData\Local\Programs\Python\Python37\lib\site-packages\matplotlib\mpl-data\matplotlibrc
pythonの環境によって異なりますが、私の場合は、「C:\Users\user\AppData\Local\Programs\Python\Python37\lib\site-packages\matplotlib\mpl-data」に「matplotlibrc」という設定ファイルがあるようです
matplotlibrcファイルがある場所まで移動する
「エクスプローラ」を起動、下図の場所に、
コンソール出力のPATH部分(matplotlibrcを除く)をコピペ > 【Enterキー】を押す
marplotlibrcを書き換える
matplotlibrcファイルの上で右クリック > 「プログラムから開く」をクリック
「メモ帳」を選択して、「OK」ボタンを押す
以下の部分を書き換える
【変更前】 【変更後】
#font .family : sans-serif > font.family : MS Gothic
matplotlibrcを再読み込みして、設定を反映させる
以下のコードを実行する
import matplotlib as mpl
mpl.font_manager._rebuild()
これで設定が反映される
日本語が正しく表示されるかチェックする
以下のコードを実行する
import matplotlib.pyplot as plt
plt.title("日本語ダヨー")
plt.xlabel("X accel")
plt.ylabel("y軸ダヨー")
plt.plot([1],label="ほげほげ")
plt.legend()
plt.show()
実行結果
これで日本語が描画できるようになる
参考までに
matplotlibのキャッシュファイルの場所の確認
以下のコードを実行する
import matplotlib as mpl
print("キャッシュファイルの場所\n\t", mpl.get_cachedir())
コンソール出力
キャッシュファイルの場所
C:\Users\user\.matplotlib
どうやら、ユーザフォルダ直下の.matplotlibにあるもよう
複数のフォントを指定したい
キーワード引数"fontname"や"prop"で個別に指定することが可能
import matplotlib.pyplot as plt
plt.title("日本語ダヨー", fontname="MS Gothic")
plt.xlabel("エックスアクシス", fontname="MS Mincho")
plt.ylabel("y軸ダヨー", fontname="HGGothicM")
plt.plot([1])
plt.legend(["ほげほげ"], prop={"family":"HGMinchoE"})
plt.show()
結果
==================================================
参考にしたサイト
Matplotlibで簡単に日本語を表示する方法(Windows)
https://gammasoft.jp/blog/matplotlib-japanese-fonts/
- Qiita : matplotlibで日本語
https://qiita.com/yniji/items/3fac25c2ffa316990d0c