※ 取り急ぎ、ざっくり書いたので今後詳しく更新します。
環境
- OS: macOS High Sierra v.10.13.4
- pyenv: 1.2.2
- pipenv: 11.10.4
matplotlib が使用できない
Mac 上の Pipenv で matplotlib を使用すると、"RuntimeError: Python is not installed as a framework" というエラーが出てしまうことがあります。これは Pipenv だけの問題ではありません。
Mac では、matplotlib のバックエンドには Cocoa が利用されています。しかし、 virtualenv 環境下では、matplotlib がそのバックエンドを参照できず、このことが原因となってランタイムエラーが出てしまっています。そのため、バックエンドとして TkAgg を指定してあげることで、この問題は解消されます。
matplotlib の設定は、matplotlibrc
に記述できます。matplotlibrc
の場所は次のように matplotlib のメソッドから確認することができます。
import matplotlib
matplotlib.matplotlib_fname()
確認できたら、その設定ファイルに下記の記述を追加して保存しましょう。
backend: TkAgg
これで、バックエンドを切り替えることができます。
日本語が豆腐になってしまう
matplotlib が利用するデフォルトのフォントは、DejaVu Serif です。しかし、このフォントには和文フォントが含まれていません。そのため、日本語は豆腐になってしまいます。 もし、図に日本語を利用する場合には使用フォントを切り替えてあげる必要があります。
まずは、https://ipafont.ipa.go.jp から IPAx フォントのゴシック体をダウンロードしてきましょう。明朝体を使いたい人は、読み替えていただければ幸いです。ダウンロードした ZIP ファイルを解凍すると、ipaexg.ttf が含まれています。これを ~/.pyenv/versions/anaconda3-5.1.0/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/ttf
に入れます。もちろん、ディレクトリはお使いの Python バージョンなど環境に合わせてください。
次に、matplotlibrc に下記の行を追加します。
font.family: IPAexGothic
このあと、matplotlibrc と同じディレクトリにある fontList.json を削除すると、うまく IPAexGothic が適用されます。