概要
-
Python 3.12以降
japanize_matplotlib
にエラーが発生し動作しない - 原因を調べて今後
matplotlib
を日本語表示できるよう解決策をまとめる - せっかくなのでかわいい日本語のフォントで表示する (最後におすすめのフリーフォントDLサイト記載)
問題点
-
japanize_matplotlib
をpip install
して利用しようとしたがdistutils
ライブラリが見つからないというエラーが発生した -
distutils
がPython3.12以降、削除されたので、ファイル内のjapanize_matplotlib
は動作しない
対処法
(1) matplotlib-fontja
を使う方法
pip install する
pip install matplotlib-fontja
import する (この日本語化処理は import するだけで機能する)
import matplotlib_fontja
全体のサンプル
import matplotlib.pyplot as plt
import matplotlib_fontja
plt.plot([1, 2, 3, 4])
plt.xlabel('簡単なグラフ')
plt.show()
(2) FontProperties
を使って都度フォントを指定する方法
import に以下を追加
import matplotlib.font_manager as fm
FontProperties
でローカルのフォントを指定 (絶対パス)
jp_font_path = r'C:\WINDOWS\Fonts\msgothic.ttc'
jp_font = fm.FontProperties(fname=jp_font_path)
利用時は以下のように fontproperties
引数にわたす
plt.xticks(fontproperties=jp_font)
全体のサンプル
import matplotlib.pyplot as plt
import numpy as np
import matplotlib.font_manager as fm
jp_font_path = r'C:\WINDOWS\Fonts\msgothic.ttc'
jp_font = fm.FontProperties(fname=jp_font_path)
cities = ['東京', '大阪', '名古屋', '福岡', '札幌']
populations = [1400, 880, 750, 510, 195]
x = np.arange(len(cities))
plt.bar(x, populations, tick_label=cities)
plt.title('日本の都市別人口', fontproperties=jp_font)
plt.xlabel('都市', fontproperties=jp_font)
plt.ylabel('人口(万人)', fontproperties=jp_font)
plt.xticks(fontproperties=jp_font)
plt.show()
(3) plt.rcParams['font.family'] = 'フォント名'
で指定する方法
plt.rcParams['font.family']
にフォント名を指定する
plt.rcParams['font.family'] = 'MS Gothic'
全体のサンプル
import matplotlib.pyplot as plt
plt.rcParams['font.family'] = 'MS Gothic'
plt.plot([1, 2, 3, 4])
plt.xlabel('簡単なグラフ')
plt.show()
(2) の方法を使用してフォントパスを指定して可愛いフォントでプロットする方法
フォントをダウンロードする
https://ymnk-design.com/バナナスリップ/
フォントパスをコピーし、反映する
import matplotlib.pyplot as plt
import numpy as np
import matplotlib.font_manager as fm
jp_font_path = r'C:\Users\yunose\Downloads\YDW_bananaslip_plus\YDW_bananaslip_plus\YDWbananaslipplus.otf'
jp_font = fm.FontProperties(fname=jp_font_path)
cities = ['東京', '大阪', '名古屋', '福岡', '札幌']
populations = [1400, 880, 750, 510, 195]
x = np.arange(len(cities))
plt.bar(x, populations, tick_label=cities)
plt.title('日本の都市別人口', fontproperties=jp_font)
plt.xlabel('都市', fontproperties=jp_font)
plt.ylabel('人口(万人)', fontproperties=jp_font)
plt.xticks(fontproperties=jp_font)
plt.show()
参照元
- https://teratail.com/questions/ispptkd2y6ai7t
- https://ai-inter1.com/matplotlib-japanize/
- https://azusa.shinshu-u.ac.jp/~hasegawa/class/programming/index.php?Python/matplotlibで日本語文字列を使う
- https://github.com/uehara1414/japanize-matplotlib/issues/26
- https://github.com/ciffelia/matplotlib-fontja
かわいいフリーフォント DLサイト
- バナナスリップ : https://ymnk-design.com/バナナスリップ/
- ニコカv2標準 : https://nicofont.pupu.jp/nicoca.html#google_vignette
- やわらかドラゴン : https://ymnk-design.com/やわらかドラゴン/