【发布时间】:2016-07-16 03:35:12
【问题描述】:
当我从 ipython shell 或 ipython notebook 运行文件时,通常会显示绘图,但当我从 bash 终端运行文件时,它们不会显示 - 从 bash 终端运行时其他一切正常.
示例 python 脚本 (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'
【问题讨论】:
-
您能否提供一个不会输出任何内容的示例完整脚本?甚至像
import matplotlib.pyplot as plt; plt.plot([1,2,3], [1,2,3]); plt.show()这样简单。另外,您使用的是什么 matplotlib 后端? -
谢谢,@wflynny。 matplotlib.get_backend() 输出 u'MacOSX' 。该代码根本不显示任何内容。
-
尝试
plt.show(block=True)只是在显示后显式阻止代码。您的编辑似乎表明窗口没有阻止代码,所以这可能会有所帮助。如果可行,我将编辑我的答案。另外,只是为了确认plt.show()是您代码中的最后一行,对吧? -
确实有效,@Munir!非常感谢。那确实是最后一行。我会接受你的回答,并会询问如何将关键字“block”默认设置为 True 作为单独的问题
标签: python bash matplotlib terminal