web-dev-qa-db-ja.com

bashターミナルからファイルを実行すると、matplotlibプロットは表示されません。

プロットは通常、ipythonシェルまたはipythonノートブックからファイルを実行すると表示されますが、bashターミナルからファイルを実行すると表示されません。bashターミナルから実行すると、他のすべてが正常に機能します。

サンプルpython script(trial.py):

import matplotlib.pyplot as plt

print 'please, show my graph'

plt.plot([1,2,3], [1,2,3])

plt.show()

これは私が得るものです(プロットは表示されません):

[~/Desktop]$ python trial.py
please, show my graph
[~/Desktop]$

私が行った場合

import matplotlib
matplotlib.use('TkAgg')

pyplotをインポートする前に、ターミナルから実行するとすぐにウィンドウが開いたり閉じたりします。

私は成功せずにモジュールをインポートするさまざまな方法を試しました:

import matplotlib.pyplot as plt
import matplotlib.pylab as plt
from matplotlib import pyplot as plt
from matplotlib import pylab as plt

ファイルにplt.show()関数があります。

私はそれを修正する方法を知っていますか?

バージョンとインストールに関する情報:

Mac OSX 10.11.3を使用しています。

In [61]: print matplotlib.__file__
/usr/local/lib/python2.7/site-packages/matplotlib/__init__.pyc

In [62]: print matplotlib.__version__
1.4.2

In [64]: print sys.version
2.7.9 (default, Apr  7 2015, 07:58:25)
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.57)]

In [65]: matplotlib.get_backend()
Out[65]: u'MacOSX'
30
drake

非対話モードでプロットを表示するには、コードにmatplotlib.pyplot.show()を追加する必要があります。 http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.show のドキュメントを参照してください

OPからさらに情報を得た後、plt.show(block=True)を使用して明示的にブロッキングを有効にする必要がありました。

48
Munir