さわやかに

Pythonのことだったり子供のことだったり

Python Matplotlibの日本語表記

Jupyter Notebookを使っていきます

Windows PowerShellを開いて該当のフォルダに移動する

cd [フォルダ名]
C:\Users\(ユーザ名)> cd python
C:\Users\(ユーザ名)\python> # 移動できました

仮装環境を作る

python -m venv [仮想環境名]
C:\Users\(ユーザ名)\python> python -m venv pydataenv

仮想環境に入る

[仮想環境名]/scripts/activate
C:\Users\(ユーザ名)\python> pydataenv/scripts/activate
(pydataenv)C:\Users\(ユーザ名)\python> # 仮想環境に入りました

pipでjupyterをインストールします

(pydataenv)C:\Users\(ユーザ名)\python>pip install jupyter

Jupyter Notebookを開きます

(pydataenv)C:\Users\(ユーザ名)\python>jupyter notebook

自動的にWebブラウザ上にJupyter NotebookのHome画面が表示される
Python3の新規ファイルを開きます

Jupyter Notebookでグラフを表示できるようにします

%matplotlib inline

適当にグラフを作成します

import matplotlib.pyplot as plt
import matplotlib.style

# ggplotスタイルを指定
matplotlib.style.use('ggplot')

# データを用意
x = [1, 2, 3]
y = [2, 4, 9]

# 折れ線グラフを描画
plt.plot(x, y)
# グラフタイトルを設定
plt.title('testグラフ')

# グラフを表示
plt.show()
f:id:kinakobanana:20201004162230p:plain

f:id:kinakobanana:20201004162430p:plain
グラフタイトルの日本語の部分が文字化けしました。
この白い四角形を豆腐というらしいです!

エラー内容は「フォントファミリー['IPAexGothic']が見つかりません。 DejaVuSansにフォールバックします。」です。

フォントをダウンロードして設定する必要があるらしいです。
moji.or.jp

最新版のVer.004.01をダウンロードします
ゴシックだけでいいのでこれにします
f:id:kinakobanana:20201004214900p:plain

ダウンロードしたzipファイルを解凍すると以下3つのファイルができます

  • IPA_Font_License_Agreement_v1.0.txt
  • ipaexg.ttf
  • Readme_ipaexg00401.txt
真ん中の「ipaexg.ttf」をコピーしてmatplotlibのフォントフォルダ(以下に記載)にコピーする
なお、最初に書いていますが「C:\Users\ユーザ名\python」にpydataenvという仮想環境をつくってpipでmatplotlibをインストールしています

ここにペースト↓
C:\Users\ユーザ名\python\pydataenv\Lib\site-packages\matplotlib\mpl-data\fonts\ttf

Matplotlibrcの設定変更

C:\Users\ユーザ名\python\pydataenv\Lib\site-packages\matplotlib\mpl-data
f:id:kinakobanana:20201004222049p:plain
エディタのAtomで開きました※メモ帳でもいいです
249行目に「#font.family: sans-serif」とあります
f:id:kinakobanana:20201004222832p:plain
これを「font.family : IPAexGothic」に書き換えます
頭の#は消してください
上書き保存して閉じます

一度テストします

・・・

それでも豆腐になりました
Matplotlibのキャッシュが残っているかららしいです。
あと、フォントの一覧ファイルを再作成するため??

Jupyter Notebookを閉じて、PowerShellで以下を実行

  • Force :隠しファイルや読み取り専用ファイルなどを削除する
  • Recurse:指定したフォルダとそのサブフォルダに含まれるファイルとフォルダを削除する

具体的には「C:\Users\ユーザ名\.matplotlib」のフォルダにある「fontlist.json」ファイルを削除している

(pydataenv) PS C:\Users\ユーザ名\python>>Remove-Item ~/.matplotlib/ -Force -Recurse

f:id:kinakobanana:20201004232457p:plain

できました!!


こちらを参考にさせてもらいました
starpentagon.net