8
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Mac上のmatplotlibでグラフ描画できないときの対処法

Last updated at Posted at 2018-07-24

最近『ゼロから作るDeep Learning』でPythonと機械学習の勉強を始めました。
1章の最後でつまずいたのでメモ。

実行環境

macOS High Sierra バージョン10.13.6
Python 3.6.5
numpy 1.14.3

問題:matplotlibでグラフ描画できない

下記を書籍p16~p17のとおりPythonインタプリタで実行。

>>> import numpy as np
>>> import matplotlib.pyplot as plt
>>> x = np.arange(0,6,0.1)
>>> y=np.sin(x)
>>> plt.plot(x, y)
[<matplotlib.lines.Line2D object at 0x121ca3be0>]
>>> plt.show()

正常時は上記を実行すると別ウィンドウで画面が開きグラフが表示されるようなのですが、何も出てきませんでした。
「matplotlib グラフ描画 できない」等でググって検索結果のリンクを上から見て回ったりました。

原因1

matplotlibの backend指定がデフォルトで画面表示できないものになっていた。


対処法1

以下ファイルのbackendをTkaggに変更。ファイル自体は600行強あったので必要なところだけ記載します。
/anaconda3/lib/python3.6/site-packages/matplotlib/mpl-data/matplotlibrc

追記:コメントでご指摘頂いた通り
~/.matplotlib/配下に上記のmatplotlibrcをコピーしてから編集、下記内容を保存しスクリプトを実行してもグラフ描画できました。
site-packages配下はあまり触らない方が良さそうです。

#backend: macosx
backend: Tkagg

変えた結果

>>> plt.plot(x, y)
[<matplotlib.lines.Line2D object at 0x12021d908>]
>>> plt.show
<function show at 0x111e19a60>

やはり描画できない。

原因2

tcl-tkというパッケージが必要らしい。

対処法2

該当パッケージをインストールし、

$ brew install tcl-tk 

matplotlibを再インストール。

$ pip uninstall matplotlib
$ pip install matplotlib

以上を実行後、もう一度書籍p16~p17のとおり実行すると
無事グラフが描画されました!!

参考サイト

https://www.dogrow.net/python/blog47/
https://qiita.com/harusora/items/ca87c73de4b975fdf23b
http://pppurple.hatenablog.com/entry/2016/02/28/213152
https://qiita.com/kkdd/items/55be4c4218a18f54716c

感想

  • 描画するためのツールを入れろとは特に書いておらず、書籍どおりに進めればできると思っていたのですが甘かったです。。
  • Vimのショートカットを覚えたい。
8
8
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?