Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
1
Help us understand the problem. What is going on with this article?
@utahkaA

Pipenv で起きる Matplotlib まわりのエラー

More than 1 year has passed since last update.

※ 取り急ぎ、ざっくり書いたので今後詳しく更新します。

環境

  • 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 が適用されます。

1
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
utahkaA

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
1
Help us understand the problem. What is going on with this article?