> >

[python]matplotlibのエラー解消方法

スポンサーリンク

前回の記事で記載した

当初はsshでVPSに接続して試していたのですが、CUIベースなのでグラフを出せず。

というか、「お前ディスプレイないじゃん!どうすんの!?」的なエラーに苛まれて
しまったので、やむなくWindows上での実行としました。

のエラー回避策を備忘録的に記載します。

環境
OS:CentOS 6.9
Python 3.6.1 :: Anaconda custom (64-bit)

エラーは以下の通り、2度発生しました。

import numpy as np
import matplotlib.pyplot as plt #エラー1
x = np.arange(0, 6, 0.1)
y = np.sin(x)
plt.plot(x, y) #エラー2
plt.show()

エラー1の詳細と解決策
※anaconda3以上のディレクトリは消してあります。

エラー発生場所:
import matplotlib.pyplot as plt

エラー内容:
Traceback (most recent call last):
  File "", line 1, in 
  File "/anaconda3/lib/python3.6/site-packages/matplotlib/pyplot.py", line 115, in 
    _backend_mod, new_figure_manager, draw_if_interactive, _show = pylab_setup()
  File "/anaconda3/lib/python3.6/site-packages/matplotlib/backends/__init__.py", line 32, in pylab_setup
    globals(),locals(),[backend_name],0)
  File "/anaconda3/lib/python3.6/site-packages/matplotlib/backends/backend_qt5agg.py", line 16, in 
    from .backend_qt5 import QtCore
  File "/anaconda3/lib/python3.6/site-packages/matplotlib/backends/backend_qt5.py", line 26, in 
    import matplotlib.backends.qt_editor.figureoptions as figureoptions
  File "/anaconda3/lib/python3.6/site-packages/matplotlib/backends/qt_editor/figureoptions.py", line 20, in 
    import matplotlib.backends.qt_editor.formlayout as formlayout
  File "/anaconda3/lib/python3.6/site-packages/matplotlib/backends/qt_editor/formlayout.py", line 56,in 
    from matplotlib.backends.qt_compat import QtGui, QtWidgets, QtCore
  File "/anaconda3/lib/python3.6/site-packages/matplotlib/backends/qt_compat.py", line 128, in 
    from PyQt5 import QtCore, QtGui, QtWidgets
ImportError: libGL.so.1: cannot open shared object file: No such file or directory
エラー解決策:
$ sudo yum install -y xorg-x11-apps

参考:
https://github.com/bioconda/bioconda-recipes/issues/266

エラー2の詳細と解決策

エラー発生場所:
plt.plot(x, y)

エラー内容:
Traceback (most recent call last):
  File "", line 1, in 
  File "/anaconda3/lib/python3.6/site-packages/matplotlib/pyplot.py", line 3306, in plot
    ax = gca()
  File "/anaconda3/lib/python3.6/site-packages/matplotlib/pyplot.py", line 950, in gca
    return gcf().gca(**kwargs)
  File "/anaconda3/lib/python3.6/site-packages/matplotlib/pyplot.py", line 586, in gcf
    return figure()
  File "/anaconda3/lib/python3.6/site-packages/matplotlib/pyplot.py", line 535, in figure
    **kwargs)
  File "/anaconda3/lib/python3.6/site-packages/matplotlib/backends/backend_tkagg.py", line 81, in new_figure_manager
    return new_figure_manager_given_figure(num, figure)
  File "/anaconda3/lib/python3.6/site-packages/matplotlib/backends/backend_tkagg.py", line 89, in new_figure_manager_given_figure
    window = Tk.Tk()
  File "/anaconda3/lib/python3.6/tkinter/__init__.py", line 2017, in __init__
    self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use)
_tkinter.TclError: no display name and no $DISPLAY environment variable
エラー解決策:
$ find / | grep matplotlibrc
/anaconda3/pkgs/matplotlib-2.0.2-np112py36_0/lib/python3.6/site-packages/matplotlib/mpl-data/matplotlibrc
/anaconda3/lib/python3.6/site-packages/matplotlib/mpl-data/matplotlibrc
$ vi /anaconda3/lib/python3.6/site-packages/matplotlib/mpl-data/matplotlibrc
  backend      : TkAgg
        ↓ ↓ ↓
# backend      : TkAgg
  backend      : Agg

参考:
http://qiita.com/nishio/items/0a8949262d86c181668b

これで両問題ともに解決に至りました。

●2017年6月12日(月)追記

結局jupyter環境を導入したため、この解決方法は不要となりました。
https://www.wmapst.net/programing/python/20170611-python-jupyter/

スポンサーリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です