Edited at

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

More than 1 year has passed since last update.

最近『ゼロから作る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のショートカットを覚えたい。