matplotlibのグラフタイトルと凡例で日本語フォントを使う方法
@ Tanao · Thursday, Apr 2, 2020 · 1 minute read · Update at Apr 2, 2020

matplotlibで日本語フォントを使うのに盛大につまづいた話について記します。

Pythonでmatplotlibを使ってグラフを描画するとき、 日本語フォントが使えず、文字化けしてしまいます。

日本語フォントを使うための設定でつまづいたので、解決策をメモしておきます。

結論

以下のQiitaの記事を読んで解決しました。

環境変数を指定するとよいそうです。

私の環境だと、日本語フォント(IPAexゴシック)をダウンロードしたあと、 Pythonのコードに以下のような記述をします。

import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
fp = FontProperties(
        fname="/home/[ユーザ名]/.local/lib/python3.5/site-packages/matplotlib/mpl-data/fonts/ttf/ipaexg.ttf"
        )
# 中略
plt.legend(prop=fp) # 凡例
plt.title("日本語のタイトル", fontproperties=fp) # タイトル
plt.savefig("ファイル名")

フォントのダウンロードは、linuxのコマンドで以下のような流れでしました。

cd ~/.local/lib/python3.5/site-packages/matplotlib/mpl-data/fonts/ttf/
wget https://ipafont.ipa.go.jp/IPAexfont/ipaexg00301.zip
sudo apt-get install unzip
unzip ipaexg00301.zip
cp ipaexg00301/ipaexg.ttf .

これらの方法は、matplotlibのインストール先によって適宜読み替える必要があります。

matplotlibのインストール先(参照している設定ファイルの場所)は、以下のメソッドで確認できます。

import matplotlib
matplotlib.matplotlib_fname()

使用環境

  • Windows10 Bash on Windows
  • Python 3.5

anacondaのような仮想環境は使わず、matplotlibなどのモジュールは直接 pip installしています。

その他試してうまくいかなかったこと

フォントキャッシュを消す

ググると大抵の場合で、「フォントキャッシュを消す」ことが解決策として提示されていました。

例えば、以下の記事など。

私の環境だとフォントキャッシュのファイルがそもそも見つからなかったので、試すことができませんでした。

seaborn依存の設定

matplotlibと一緒にseabornを使用していたのですが、以下の記事に書いてあることを試したところ、解決しませんでした。

結果、私の環境では、seaborn特有の設定は必要なさそうでした。

今後同じような問題が起きる可能性はあるので、一応メモしておきます。

再起動

初心に返り、bashを再起動したりもしましたが、解決しませんでした。

PC自体の再起動は試していません。

まとめ

matplotlibでグラフを書く際、日本語フォントを使うことができました。

調べるのに1~2時間かかりました…。疲れた…。

なお、描きたかったのは、我が子の授乳表(授乳とミルクのタイミングメモ)です。

日本語でタイトルと凡例が書けました。めでたしめでたし。

Tanao's blog
好きなものをゆるくつづる

gadget heroku hugo ifttt it netlify python raspberrypi rss service slack vim アウトドア ハンドメイド 写真 家具家電 日常 生活術 育児

© 2020 Blog by Tanao

Powered by Hugo with theme Dream.

プライバシーポリシー

Google Analytics

当ブログではアクセス解析ツールとしてGoogle Analyticsを使用しています。 Google AnalyticsではCookieを使用したデータ収集をしています。 情報の扱いやCookieの消去方法について、詳しくはこちらをご覧ください。

免責事項

当ブログにはなるべく正しい情報を掲載するように努めていますが、 意図せず古い情報や誤情報を掲載する可能性もあります。 当ブログに掲載した情報やリンク先によって生じた損失、損害等について 一切の責任を負いかねますので、ご了承ください。

About me

  • tanao
    • アラサー会社員(育休中)
    • 情報処理系のお仕事
    • 夫と娘(0歳)の3人暮らし

本ブログでは気の向くままに好きなことをつづります。

  • 技術・ガジェット
  • 育児
  • 生活術
  • アウトドア
  • 写真
  • ハンドメイド・工作
  • etc.

以下のブログランキングサイトに登録しています。

ブログランキング・にほんブログ村へ

Social Links