63
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

updated at

matplotlibの日本語文字化けを解決する

matplotlib の日本語の文字化け(豆腐)問題解決方法

matplotlib を使っていて日本語の文字化け(豆腐)の解決に苦労したので手順をメモ。

環境

Python 3.7.1
macOS Mojave 10.14.1

日本語の文字化け(豆腐)問題

下のグラフのX軸とグラフタイトルが文字化け(豆腐:◻︎◻︎◻︎◻︎)になっています。
この問題を解決したい。

スクリーンショット 2018-11-19 22.24.52.png

matplotlibの設定ファイルの場所を探す

import matplotlib
matplotlib.matplotlib_fname()

僕の環境では以下っぽい。
******/lib/python3.7/site-packages/matplotlib/mpl-data/matplotlibrc

日本語フォントをダウンロード

IPAexフォントをダウンロード。

ダウンロードして解凍するとipaexg.ttfというファイルがあるはず。
それを、さっき調べたmatplotlibの設定ファイルが置いてあるフォルダ内のfonts/ttf/フォルダにコピーする。

フォントキャッシュの削除

matplotlibはフォントキャッシュを持っていて、それを削除しないと設定が再読み込みされないらしい。

# フォントキャッシュの場所を探す
import matplotlib as mpl
mpl.get_configdir()

僕の環境では以下っぽい。
/Users/<ユーザー名>/.matplotlib

とりあえず存在しているファイルを削除してみる。

# ファイルとフォルダ
$ rm fontlist-v300.json
$ rm -r tex.cache

そしてpythonにてIPAPGothicを指定して再度グラフ表示。

# フォントを指定
from matplotlib import pyplot as plt
plt.rcParams['font.family'] = 'IPAPGothic'

結果

豆腐のまま。。。。

解決

いろいろ四苦八苦していたら、
fontlist-v300.json の中身を見ると以下の記述。

    {
      "fname": "fonts/ttf/ipaexg.ttf",
      "name": "IPAexGothic",  # ここ #
      "style": "normal",
      "variant": "normal",
      "weight": 400,
      "stretch": "normal",
      "size": "scalable",
      "__class__": "FontEntry"
    },

フォント名がIPAexGothicだと気がつく。
ネット情報に頼り意味もわからずコピペ(IPAPGothicを指定)していたことが原因。

# フォントを指定
from matplotlib import pyplot as plt
plt.rcParams['font.family'] = 'IPAexGothic'

やっと日本語が表示されるようになりました。

スクリーンショット 2018-11-19 23.08.10.png

おしまい

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
63
Help us understand the problem. What are the problem?