6
6

[Python] matplotlib 可愛いフォントで日本語化

Last updated at Posted at 2024-03-23

Untitled.png

概要

  • Python 3.12以降 japanize_matplotlib にエラーが発生し動作しない
  • 原因を調べて今後 matplotlib を日本語表示できるよう解決策をまとめる
  • せっかくなのでかわいい日本語のフォントで表示する (最後におすすめのフリーフォントDLサイト記載)

問題点

  • japanize_matplotlibpip 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()

Untitled 1.png

(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()

2024-03-23_23h35_42.png

(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()

Untitled 1.png

(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()

Untitled 3.png

参照元

かわいいフリーフォント DLサイト

6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6