Python

Pythonのmatplotlibで画面が白くなり描画(表示)されない場合の対処法(Mac)

こんにちは,しまさん(@nitkcdadon)です.

先日_tkinterの問題をクリアしたのですが,matplotlibがうまく動きません.

macOS(Mojave)でNo module named '_tkinter’を解決する(pyenv , Python3.x)Mac OSX 10.14(Mojave)でPython3.x系を使っているときにNo module named '_tkinter’と出た際の解決方法について紹介しています.pyenvに入っているPythonを入れ直すこと,ActiveTclからダウンロードすることで対応しました....

画面は表示されたのですが白い画面がでるのみでした.

今回はこの解決方法について紹介します.

方法を試す途中でグラフが表示されるようになる方もいると思うので適宜試してみてください.

TkAggの紹介もしていますが,私はそれ以外の方法で解決しました.

環境

macOS Mojave(10.14)

pyenv Python3.6.7

サンプルコード

import matplotlib.pyplot

x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 8]

matplotlib.pyplot.plot( x, y )
matplotlib.pyplot.show()

 

XCodeの確認

既に入れている方はエラーが出ますが問題ありません.

xcode-select --install

 

tcl-tkのインストール

pip install tcl-tk

 

matplotlibのインストール

まずはpipでインストールをしましょう.

pip install numpy matplotlib 

 

matplotlibrcの作成

~/.matplotlib/にmatplotlibrcを作成します.

vim ~/.matplotlib/matplotlibrc
backend : TkAgg

よく見かけるページではここまでの方法で解決されていて,喜ぶ方が多かったのですが私はここまでの方法で試しても白い画面が表示されるだけでした.

ではここからは私の場合の解決方法を紹介しています.

Qt関連のインストールとmatplotlibrcの再設定

matplotlibではbackendにTkAggやAggなどがありますが他にQt4Aggというものがあります.

今回はそれを使えるようにするためにQt4Agg関連と思われるパッケージをAnacondaのpip一覧から見つけてインストールすることにしました.

PyQt5 5.9.2
PyQt5-sip 4.19.13
QtAwesome 0.5.2
qtconsole 4.4.2
QtPy 1.5.2
pip install PyQt5 PyQt5-sip QtAwesome qtconsole QtPy 

そしたらもう一度matplotlibrcを書き換えます.

backend: Qt4Agg

そうしてコードを実行すると…

出たぞ〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜!!!!!!!

これに2日かけた私… .

TkAggの記事多すぎて他の手段はないものと思い込んでしまっていた.

Tips 1 : pipのリスト

先程のpipでダメだった人用に一応私のpipのリストを貼っておきます.

absl-py==0.6.1
appnope==0.1.0
asn1crypto==0.24.0
astor==0.7.1
astroid==2.0.4
atomicwrites==1.2.1
attrs==18.2.0
Automat==0.7.0
backcall==0.1.0
bleach==3.0.2
certifi==2018.10.15
cffi==1.11.5
chardet==3.0.4
constantly==15.1.0
cryptography==2.3.1
cssselect==1.0.3
cycler==0.10.0
decorator==4.3.0
defusedxml==0.5.0
Django==2.1.3
entrypoints==0.2.3
flake8==3.6.0
gast==0.2.0
grpcio==1.16.0
h5py==2.8.0
hyperlink==18.0.0
idna==2.7
incremental==17.5.0
ipykernel==5.1.0
ipython==7.1.1
ipython-genutils==0.2.0
ipywidgets==7.4.2
isort==4.3.4
jedi==0.13.1
Jinja2==2.10
jsonschema==2.6.0
jupyter==1.0.0
jupyter-client==5.2.3
jupyter-console==6.0.0
jupyter-contrib-core==0.3.3
jupyter-contrib-nbextensions==0.5.0
jupyter-core==4.4.0
jupyter-highlight-selected-word==0.2.0
jupyter-latex-envs==1.4.4
jupyter-nbextensions-configurator==0.4.0
jupyterlab==0.35.2
jupyterlab-server==0.2.0
jupyterthemes==0.19.6
Keras==2.2.4
Keras-Applications==1.0.6
Keras-Preprocessing==1.0.5
kiwisolver==1.0.1
lazy-object-proxy==1.3.1
lesscpy==0.13.0
lxml==4.2.5
Markdown==3.0.1
MarkupSafe==1.0
matplotlib==3.0.1
mccabe==0.6.1
mecab-python3==0.7
mistune==0.8.4
more-itertools==4.3.0
nbconvert==5.4.0
nbformat==4.4.0
notebook==5.7.0
numpy==1.15.4
pandas==0.23.4
pandocfilters==1.4.2
parsel==1.5.1
parso==0.3.1
pexpect==4.6.0
pickleshare==0.7.5
pluggy==0.8.0
ply==3.11
prometheus-client==0.4.2
prompt-toolkit==2.0.7
protobuf==3.6.1
ptyprocess==0.6.0
py==1.7.0
pyasn1==0.4.4
pyasn1-modules==0.2.2
pycodestyle==2.4.0
pycparser==2.19
pycrypto==2.6.1
PyDispatcher==2.0.5
pyflakes==2.0.0
pygame==1.9.4
Pygments==2.2.0
PyHamcrest==1.9.0
pylint==2.1.1
pyOpenSSL==18.0.0
pyparsing==2.3.0
PyQt5==5.9.2
PyQt5-sip==4.19.13
pytest==3.10.0
python-dateutil==2.7.5
pytz==2018.7
PyWavelets==1.0.1
PyYAML==3.13
pyzmq==17.1.2
qrcode==6.0
QtAwesome==0.5.2
qtconsole==4.4.2
QtPy==1.5.2
queuelib==1.5.0
redis==2.10.6
requests==2.20.0
rise==5.4.1
scikit-learn==0.20.0
scipy==1.1.0
Scrapy==1.5.1
Send2Trash==1.5.0
service-identity==17.0.0
sip==4.19.8
six==1.11.0
tensorboard==1.11.0
tensorflow==1.11.0
termcolor==1.1.0
terminado==0.8.1
testpath==0.4.2
Theano==1.0.3
tornado==5.1.1
traitlets==4.3.2
Twisted==18.9.0
typed-ast==1.1.0
urllib3==1.24.1
w3lib==1.19.0
wcwidth==0.1.7
webencodings==0.5.1
Werkzeug==0.14.1
widgetsnbextension==3.4.2
wrapt==1.10.11
xonsh==0.8.2
xontrib-powerline==0.4.0
yapf==0.24.0
zope.interface==4.6.0

適当なテキストファイルにインストールして以下のコマンドを実行してください.

ただし,scikit-learnをテキストの最後に移動させてください.

pip install -r XXX.txt

ここらへんのことは記事に書いています.

macOS(Mojave)でNo module named '_tkinter’を解決する(pyenv , Python3.x)Mac OSX 10.14(Mojave)でPython3.x系を使っているときにNo module named '_tkinter’と出た際の解決方法について紹介しています.pyenvに入っているPythonを入れ直すこと,ActiveTclからダウンロードすることで対応しました....

Tips 2: pipリスト(パッケージ)を一括でアップデートする

以下のコマンドを実行するだけです.

pip freeze --local | grep -v '^\-e' | cut -d = -f 1  | xargs -n1 pip install -U

さいごに

長い死闘の末matplotlibを使えるようにしました.

私と同じエラーでWebをさまよう人が一人でも減ればいいなと思います.

TkAgg以外の記事もっと増えてください(切望).

参考

[入門]Python初心者が圧倒的成長するために使うサービス,本Python初心者向けの本,Webサービスについて網羅的に紹介をしています.Pythonの勉強で私が実際に使用した本です.入門書をさらに細分化し,学ぶならどのレベルがいいのかわかりやすくしています....
ABOUT ME
しまさん
てくてくぷれいす運営者のしまさんです. 高専→大学編入してから行動的な学生ブロガー? / 自身の変化を求めてブログを6月から開始 / グレープフルーツと本が好き / Distributed SNSやSecurity,プログラミングやVR等のIT系や自身の編入体験談や高専のこと,大学生活を書いてます(たまに小ネタ) / Progateで勉強中